資料 プログラムソース too 1. c
}
} return (rp);
}
f**********************************************/
/* 整数値の入力 */
/・**********************************************/
int suuti−input(int xpes,int ypes,int *bot,int o
pt)
{
int i,j,cしsuuti,n=0:
dQuble x,y;
char kyi ¥O , a[10];
char flg= ; void far *groundptdata;
*bot=L;
mouse offOl cl=getcolorO;
mou$e−window(xpos,ypos+60,xpos+130,ypos+135)
;
ground−data=get−wi ndow(xpos−1,ypos−1,xpos+13 3,ypos+138);
flame(xpos,ypos,xpos+13e,ypos+135,LIGHTGREEN,
2)i
flame(xpos+5,ypos+35,xpos+35,ypos+55,BLACK,O)
;
setcolor(BLACK);
for(i;1;iく=5;i++){
for(j;1;jく=2;j++){
setfillstyle(SOLIDrmFILL,BLAC K);
bar3d(xpos+(i−1)*25+6,ypos+
(j−1)*25+61,xpos+(i−1)*25+26,ypos+(j−1)*25+81,0,
o);
setfillstyle(SOLIDTFILL,WHIT
E);
bar3d(xpos+(i−1)*25+5,ypos+
(j−1)*25+60,xpos+(i−1)*25+25,ypos+Cj−1)*25+80,0,
o);
} }
setfillstyle(SOLI]一FILL,BLACK);
bar3d(xpes+6 ,ypos+111,xpos+51 ,ypos+131,0,0)
;
bar3d(xpos+56,ypos+111,xpos+126,ypos+131,0,0)
;
setfillstyle(SOLID−FILL,YELLOW);
bar3d(xpos+5 ,ypos+110,xpos+50 ,ypos+130,0,0)
;
bar3d(xpos+55,ypostllO,xpos+125,yp6s+130,0,0)
;
setcolor(BLACK);
outtextxy(xpos+ 7 ,ypos+62, 1 );
out textxy(xpOs+32 ,ypos+62, 2 );
outtextxy(xpos+57 ,ypos+62, 3 );
ottttextxy(xpos+82 ,ypos+62, 4 );
outtextxy (xpos+107,ypos+62, 5 );
outtextxy(xpos+ 7 ,ypos+87, 6 );
outtextxy(xpos+32 ,ypos+87, 7 );
outtextxy(xpos+57 ,ypos+87, 8 );
outtextxy(xpos+82 ,ypos+87, 9 );
out textxy (xpos+107 ,ypos+87, O ) ; outtextxy(xpos+7,ypos+112, 訂正 );
outtextxy(xpos+57,ypos+112, 入力終了 );
switch (opt){
case 1:
outtextxy(xpos+5,ypos+10, 何等分し
ますか );
outtextxy(xpos+36,ypos+37, 等分 (n
)2) );
break;
case 2:
ou七textxy(xpos+5,ypos+10, 何番目の
点ですか );
outtextxy(xpos+36,ypos+37, 番目 (m
=〉. 1) );
break;
case 3:
outtextxy〔xpos+5,ypos+10, 何角形で すか? );
outtextxy(xpos+36,ypos+37, 角形(5〜
18) ) ;
break;
case 4:
outtextxy(xpos+5.ypos+10, 何組です か? );
outtextxy(xpos+36,ypos+37, 組(1〜
20) )l break;
case 5:
outtextxy(xpos+5,ypos+10, 何番です か? );
outtextxy(xpos+36,ypos+37, 番(1〜
50) ) ;
break;
case 6:
outtextxy(xpos+5,ypos+10, 何番です か? );
outtextxy(xpos+36,ypos+37,t 番 (1〜
3) ) ;.
break;
} rnouse−on O ;
mouse−fingerTcsr(xpos+55,ypos+80);
setcolor(WHITE)i input:
do{
piO;
do{
get−mouse−position(&x,&y)l if(rnouse−rightmbuttonO==CLICK)
{
*bot=R;
goto exit;
}
}white (mouse left−buttonO!=CLICK);
if ((y>ypos+60 && y<ypoS+80) && (x
>xpos+5 &&x<xpos+25 )) {ky= 1 ;}
else if((y>ypos+60 && y〈ypos+80) && (x
>xpos+3G&&x<xpos+50 )) {ky=,2,;}
else i f((y>ypos+60 && y<ypos+80) && (x
>xpos+55 && x<xPos+75 )) {ky= 3 ;}
else if((y>ypos+60 && y〈ypos+80) && (x
>xpGs+80 && x<xpos+100)) {ky= 4 ;}
else if((y>ypos+60 && y<ypOs+80) && (x
>xpos+105.&& xくxpos+125)) {ky= 5 ;}
else if((y>ypos+85 && y<ypos+正05) &&
(x>xpos+5 && x〈xpos+25)) {ky;,6,;}
e且se if((y>ypos+85 && y<ypos+105) &&
(x>xpos+30 && x<xpos+50)) {ky= 7 ;}
else if((y>ypos+85 && y<ypos+105) &&
(x>xpQs+55 && x<xpos+75)) {ky; 8 ;}
else if((y>ypos+85 &&y<ypos+105) &&
(x>xpos+80 && x<xpos+100)) {ky= 9 ;}
else if((y>ypos+85 && y〈ypos+105) &&
(x>xpos+le5 && x〈xpos+125)) {ky± O ;}
else if((y>ypos+110 && y〈ypos+130) &&
(x>xpos+5 && x〈xpos+50 )) {flg= a ;ky= ¥O ;}
else if((y>ypos+110 && y<ypos+130) &&
(x>xpos+55 && xくxpos+125)) {flg; r ;ky= ¥O ;}
else { noiseO;
goto inputi
資料 プログラムソース
too1.c
}
if ((n>=3) (flg=一一 a )){
*a= ¥O ;
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O)i
flg.t ,;
n=O;
goto input;
} a[nユ=ky:
a[n+1]= ¥O ; n++l
flarne(xpos+5,ypos+35,xpos+35,ypos+55,BLA CK,O)i
gprintfxy(xpos+7,ypos+37. %3s ,a);
}while (f!g!= r );
exit:
suuti=atoi(a);
switch (opt) { case 1:
if ((*bot!=R) && (suuti〈2)) { piO;
*a= ¥O l
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O);
flg一 ; n=O;
goto input;
} break;
case 2:
if ((*bot!=R) && (suuti〈1)) { piO;
*a= ¥O ;
flarne(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O);
flg= i n=O;
goto input;
} break;
case 3:
if ((*bot!;R) && (((suuti〈5) Il (suしI ti>18)))) {
piO;
*a= ¥O ;
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O);
flg= l n=O;
goto input;
} break;
case 4:
if ((*bot==R) lI (suuti<1> Il (suuti
>20)) { piO;
*a= ¥O ;
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O);
flg= l n=O;
*bot=L;
goto input;
} break;
case 5:
if ((*bot!=R) && (((suuti〈1) ll (suu ti>50)))) {
piOi *a= ¥O ;
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O);
flg= ; n=O;
goto input;
} break;
case 6:
if ((*bot==R) Il (suuti〈1) ll (suuti
>3)) { piOl *a± ¥O ;
flame(xpos+5,ypos+35,xpos+35,ypo s+55,BLACK,O)l
flg= ; n=O;
*bot=L;
goto input;
} breakl } *a= ¥O ; mouse−off O i
put.window(xpos−1,ypos−1,ground7data)l setcolor(cl);
return (suuti);
}
c−nurn]
c−nurn]
cmnum]
c−nurn]
c−nurn]
c−num]
c−nurnl
c−num]
c.num]
c+num]
c−nurn]
c−num]
c−nurn]
c−numコ
。.nurn]
c−nurn]
c−num]
void rireki−touroku(int opt)
{
getdate(&hiduke)i gettime(&jikan);
rec[rec−num].rnon =hiduke.da rec[rec−num].day =hiduke.
rec[rec−num].hour=jikan.ti−
rec[rec_nu皿コ.min =jikan.ti_
rec[recnnurn].sec =jikan.ti−
rec[rec−num].job=opt;
switch (opt) { case START
C−num].sousa, ** 開始 **tJ);
case POINT ONSCREEN ;1 N .
一rnon;
da−day;
hour;
rnin;
sec;
.sousa,job−cmrnd[6]);
case POINT ONLINE
.sousa,job−cmmd[7]);
case MID POINT
. sousa , j ob−cgttttd [8] ) ;
case INTERSECTION
.sousa,job−cmrnd[9]);
case SUBDIVIDE
.sousa,job−cmmd[10]);
case REFLECT
.sousa,job.cmmd[llコ):
case SENBUN
.sousa,job−crnrnd[12]);
case SEGMENT
.sousa,job−cmrnd[13]);
case LINE EXTEND
.sousa,job_c皿md[14]);
case PERPEND
.sousa,jobucmmd[15]);
case PERPEND BISECT
.sousa,job−crnmd[16]);
case ANGLE B ISECT
.sousa,job−cmrnd[17]);
case PARALLEL LINE
.sousa,job−cnund[18]);
case SANKAKU
.sousa,job.cmmd[19]);
case SEISANKAKU
.sousa,job−crnrnd[20]);
case NITOUHEN
.sousa,job−cmmd[21]);
case CHOKKAKU
.sousa,job−cmmd[22]);
:
:
break;
:
break;
:
break;
二
breakl
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
:
break;
strcpy(rec[re break;
strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpyCrec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re strcpy(rec[re
一 178 一
資料 プログラムソース
tool.c
c nurn].
c num].
cnu皿].
c−num].
c−num].
c』u皿].
cnu皿].
c nurn] .
c nurn].
c num].
c皿m].
c nurn].
c ntirn].
c−num].
c num].
c nurn] .
c nurn].
c nurn].
c num].
c』u皿].
c nurn].
c nurn] .
c nurn] .
c nurn].
c−nurn] .
rec
}
case
sousa,job.cmrnd[23]);
case SIKAKU sousa,job=cmmd[24]);
case SEIHOUKEI sousa, job−ctttmd[25] ) ; case CHOUHOUKEI sousa,job−cmrnd[26]);
case HEIKOUSIHENKEI sousa,job−cmmd[27]);
case HISIGATA sousa,jobTcmmd[28]);
・case TAKAKUKEI sousa,jeb−cmmd[29]);
case SEITAKAKUKEI sousa,job−crnrnd[30]);
case UNDO
sousa, **1つ前に戻る case CLEAR
sousa, **図形全消去 case DISTANCE sousa,job−cmmd[33]);
case ANGLE
sousa,job−cmrnd[34]);
case AREA
sousa,job−cmmd[35]);
case CALC Sousa, job−crnrnd[36] ) ; case HEIKOUIDOU sousa,job−cmmd[41]);
case KAITENIDOU sσusa,job_cmmd[42コ);
case TENTAISHOU sousa,job−cmmd[43]);
case SENTAISHOU sousa,jobLcmrnd[44]);
case SOUJIHENKAN sousa,job−crnmd[451);
case SAVE
sousa,job−cmmd[46]);
case LOAD
sousa, **図形の呼出し case REVIEW
sousa, **再現開始 case REPEAT END sousa,. **繰り返し終了 case REPEAT BREAK sousa, **再現中断 case耳ND
sousa, **終了 ** );
}
num++;
CHOKKAKUNITOUHEN : strcpy(rec[re break;
: strcpy(rec[re break;
: strcpy(rec[re break;
: strcpy(rec[re break;.
: strcpy(rec[re break;
: strcpy(rec[re break;
: strcpY(rec[re break;
: strcpy(rec[re break;
: strcpy(rec[re ** ); break;
: strcpy(rec[re ** ); break;
: strcpy(rec[re break;
: strcpy(rec[re break;
二 strcpy(rec[re break;
: strcpy(rec[re break;
: strcpy(rec[re
breakl
: strcpy(rec[re break;
: strcpy(rec[re break;
: strcpy〈rec[re
breakl
: strcpy(rec[re
breakl
: strcpy(rec[re break;
: strcpy(rec[re ** ); break;
: strcpy(rec[re ** ); breaki : strcpy(rec[re ** ); break;
: strcpy(rec[re ** ); break;
: strcpy(rec[re break;
179 一
資料 プログラムソース point.c
#include geo.h
#include <conio.h>
#include <math.h>
#include 〈stdlib.h>
#include <graphics.h>
extern extern extern extern extern extern extern
extern double px[52],py[52コ;
extern char p−label[100];
extern int job−nurn;
extern int job[50];
extern int ip−nurni extern int p−num[100];
extern char *pointmlabel[52]
extern char *job一.cmmd[48];
extern char・*msg[34];
.int cp−nurni int varia[50];
int v nurn;
struct ver hen[100];
struct ang kaku[100];
inthnu皿;
int k nurn;
;
tl
},vhile(mouse−left.buttonO!=CLICK);
save−cp(x,y);
pset(x,y,BLACK);
job[job−nurn]=POINT−ONSCREEN;
rireki 七〇uroku(PO王NT ONSCREEN);
job−num+十;
exit:
clearTmessageOi
po int−rnenu O ;
}
/*一
*/
/*
*/
/*一
*ノ
任意の点の表示
void point−onscreen−dispO
{
double x,yi
mouse−window(4,28,438,394);
f***********************************************
*/
/* 点の作図メニュー
*/
/***********************************************
*!
void point−rnenuO
{
int n;
message(450,28,630,46,LIGHTRED,8,BLACK, どん な点ですか? 〉;
message(450,52,630,7e,LIGHTRED.8,BLACK, (右 ボタン→前のメニュー) );
n=menu(POINT,2,26)l clrscrO;
switch(n){
一 L . . . 1 一
}
}
case O:draw−menu O;
case 1:point−onscreenO case 2:point−onlineO;
case 3:mid−pointOl case 4:intersectionO;
case 5:subdivideO;
case 6:reflectO;
break;
;break;
breaki break;
break;
break;
break;
/**********************************************/
/* 任意の点 .*/
/**********************************************/
vQid point onscreenO
{
double x,y;
tuessage(450,28,630,46,LIGHTRED,8,BLACK,rnsg[2])
;
message(450,52,630,70,LIGHTRED,8,BLACK,msg[3])
;
mouse−window(4,28,438,394);
rnouse−cross−csr(200, 150) 1
piO;
do{
get−mouse−position(&x,&y);
if(shift−key−scanO==1){
x=10*(((int)x+5)f10);
y=10*(((int)y+5)f10);
set−mouse−position(x,y)1 }
position(x,y);
if(mouse_right_buttonO=ニCL工CK) goto exi
pl−loop:
piOi do{
get−rnouse−position(&x,&y)l if(shiftLkey−scanO==1){
x=10*(((int)x+5)/10);
y=10*(((int)y+5)/10);
set.mouse−posttion(x,y);
}
position(x,y);
}while(mouse=left−buttonO!=CLICK);
saveLcp(x,y);
rnouse−offOi pset(x,y,BLACK);
job[job−num]=POINT−ONSCREEN;
ri reki−touroku(POINT..ONSCREEN);
job−nurn++;
rnouseTon O 1
}
f**********************************************f
/* 直線上の点 */
/・**********************************************/
void point−onlineO
{
double xl,yl,x2.y2;
int btn,p;
char *a,*bl
message(45e,28,630,46,LIGHTRED,8,BLACK,msg[4])
;
piOl
rnouse−window(4,28,438,394);
mouse.cross−csr(2eO,150);
pl:/*1点目の取得*/
message(450,52,630,70,LIGHTRED,8,BLACK,msg[6])
;
getpoint(&xl,&yl,&btn,&p);
if(btn==R)goto exiti a=pointLlabel[p];
p2:/*2点目の取得*/
message(450,52,630,70,LIGHTRED,8,BLACK,msg[7])
;
9et_Point(&x2,&y2,&btn,&p);
if(btn==R){
ロ 1P_nurn一一,
gotO P1;