• 検索結果がありません。

資料 プログラムソース 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;