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

資料 プログラムソース geo. h

void quad−info(int tl,int t2,int t3,int t4,int o

pt);

int hen−search(int tl,int t2);

double kaku−search(int tl,int t2,int t3);

int point−search(double xl,double yl);

void newpoint−check(dollble x,double y,int piint cp,double deg);

void icchi−msg(int p,int cp,double deg,int rp);

void kaiten−kekka.msg(void);

void calculator(int xpos C int ypos);

void disp−num(double value,double xpos,double yp os)i

int suuti−input(int xpos,int ypos,int *bot,int o

pt);

double valueminput(int xpos,int ypos,int opt,int

*bot);

void kana−key−disp(int xpos,int ypDs);

void tenLkey−disp(int xpos,int ypos)i int file .view O;

void idou−undo(int zukei,int pl,int p2,int p3,in t p4,int *p);

void keika−fileO;

void rireki touroku(int opt);

void rirekimwriteO;

void chousaO;

資料 プログラムソース main, c

#include <stdlib.h>

#include <dos.h>

#include <conio.h>

#include <math,h>

倖include <pc98曾h>

#include <graphics.h>

#include  geo.h

dollble px[52],py[52];

int cpTnurn;

総数*/

の座標 */

int ip−nurn;

*/

*/

int p.nurn[100];

あるか*/

int job−num;

*f

int job[50]1

*/

int v nurn=O;

数*/

int varia[50];

納*/

int t nurn=Ol 数*/

double tran[50];

納*/

int data nurn=1;

*/

*!

*/

int h num=O;

*一/

int k nurn=O;

*/

int bun num=1;

るか*/

の関係*/

int r nurn=O;

の個数*/

int rec num=e;

*/

または4桁*ノ int henji[5];

*/

/*作図によってできた点の番号,

  /*作図によってできた点

/*指示された点の総数 char p.label[100]:/*指示された点の記号

struct ver hen[10e];

struct ang kaku[100コ;

f*指示された点は何番目の点で

/*選択された作業項目の総数

/*選択された作業項目の番号

/*入力された変数(整数)の個

/*入力された変数(整数)を格

/*入力された変数(実数)の個

/*入力された変数(実数)を格

/*測定値の数   /*辺の情報を格納   /*角の情報を格納   /*辺の個数   ノ*角の個数

/*証明の文章を何行目に表示す struct kaiten rot[20];/*回転前の点と回転後の点          /*回転移動によって重なった点          /*操作をした回数

int user num=7777;/*利用者番号(生徒番号)3桁

struct rireki rec[500];/*操作の履歴 struct tirne j ikan;

struct date hiduke;

char*bottorn−crnmd[7]={ 作図        取消

       計測        移動        ファイル tS,

       再現        終了 };

char*msg[34];{ 作業内容を選択   ,          作図する図形の指定          点の位置を指定   ,          指定終了は右ボタン          どの線分上の点?  ,          線分を2点で指定  ,          1点目の指定    ,          2点目の指定    ,          3点目の指定    ,

/* e */

/* 1*f

/* 2*/

/* 3 */

/* 4 */

f* 5 */

/* 6 *f

/* 7 *f

/* 8 */

4点目の指定 2っの線分を指定 どの点の対称点?

どの2点を結ぶ?

角を3点で指定 どの点から?

どの線分を?

3点を指定 どの点を通る?

どの線分に平行?

どの線分に対して?

どの線分に対して?

1}

:e

7t

rJ

l)

ll

rt rf J)

IJ

         三角形を3点で指定 ,          基準となる辺を指定 ,          頂点の位置は?            四角形を4点で指定 ,          頂点の位置を確定  ,          1つ前の作図を取消 ,          全ての図形を消去  ,          OKならば左ボタン          どの辺の長さ?            どの角の大きさ?  ,          どの三角形の面積? ,          左ボタンで次の作業 ,          自動的に繰り返し

char*job−cmmd[48];{

の基本メニュー*/

作図メニュー*/

作図メニュー*/

形の作図メニュー*/

形の作図メニュー*/

形の作図メニュー*/

のメニュー*/

のメニュー*/

の図形メニュー*/

/* 9 *f

/* 10 */

!* 11 */

f* 12 */

/* 13 *f f* 14 *!

/* 15 *f

/* 16 */

/* 17 */

/* 18 */

f* 19.*/

/* 20 */

/* 21 */

/* 22 */

/* 23 */

f* 24 */

f* 25 */

/* 26 *f

/* 27 *f

/* 28 *f

/* 29 */

/* 30 */

/* 31 *!

/* 32 */

線分(連結)

線分の延長 ,/*14*/

垂直二等分線 ,/*16*/

角の二等分線 ,/*17*〆

平  行  線 ,/*18*ノ 任意の三角形 ,/*19 正三角形 ,/*20*/

二等辺三角形 ,/*21*/

直角三角形 ,/*22*/.

直角二等辺 ,/*23*/

任意の四角形 ,/*24 正方形 ,/*25*/

長  方  形 ,/*26*f 平行四辺形 ,/*27*/

ひ  し 形 ,/*28*/

任意の多角形 ,/*29 正多角形 ,/*30*/

1つ前に戻る ,/*31 図形全消去 ,/*32*ノ

線分の長さ ,/*33 角の大きさ ,/*34*/

三角形の面積 ,/*35*/

計算(電卓) ,/*36*/

点 ,/*37

線 分 ,/*38*/

        }i /* 33 */

        /* 0 作図   線    ,/* 1*/

三 角  形 ,/* 2*/

四 角 形 ,/* 3*/

多 角 形 ,/* 4*/

C 一 /* 5*/

任意 の点 ,/* 6 点の 直線上の点 ,/* 7*/

中    点 ,/* 8*/

交    点 ,/* 9*/

等分点 ,/*10*/

対称点 ,/*11*/

任意の線分 ,/*12 線の

       , /* 13 */

     線 ,, /* 15 */

三角

四角

多角

取消

計測

移動

167 一

資料 プログラムソース main.・c

の種類メニ;一*/

イルのメニュー*./

三  角 形 ,/*39*/

四 角 形 ,ノ*40*/

平行移動 ,/*41移動 回転移動 ,/*42*/

点対称移動 ,/*43*!

線対称移動 ,/*44*/

脇詰灘㌦,/グ、416*/フア

図形の呼出 }:/*47*/

  }

rireki−touroku(START);

textrnode(N8025);

window(O,O,80,25);

setviewport(O,O,639,399,1);

mouse−initO 

mouse−window(O,O,639,39g);

titleO;

cleardeviceO;

makescreen O ; rnain−rnenuOl

char *point−labet[52]=

     { A , B , C , D , E , F , G H , 1 , J

j L M

     N , O , P , Q , R , S , T , U , V , W x . y z

     al , b , c , d , e , f , g , h , i , j , k 1 rn

     n , o , p , q , r , s , t , u , v , w x C 凵hC 噤hp;

in七 menu_inf[][2コ={ 0,5,

一 */

  */

  */

ユー*/

ユー*/

ユー*/

v・@*/

一 */

v *f

6,6,

12,7,

lg,5,

24,5,

29,2,

31,2,

33,4,

37,4,

41,5,

/*作図の基本メニュ

/*点の作図メニュー

/*線の作図メニュー

/*三角形の作図メニ

/*四角形の作図メニ

/*多角形の作図メニ

/*取消メニュー */

/*計測メニュー */

/*移動の図形メニュ

/*移動の種類メニュ 46,2}; /*ファイルのメニュ

f* $*********************************************

/*

rnain

f***********************************************

void rnainO

le j ;

int gd=DETECT,gm,errorcode;

errorcode = registerbgidriver(PC98−driver)i if (errorcode く 0) {

     printf( グラフィックスのエラー:%s¥n grapherrormsg(errorcode));

     printf( どれかキーを押すと終了します     getchO;

    exit(1);

  }

initgraph(&gd,&gm, B:¥¥APRI¥¥BORLANDC¥¥BGI )

  errorcode = .graphresultO;

  if (errorcode != grOk) {

      printf( グラフィックスのエラー:%s¥n

, grapherrorrnsg(errorcode));

      printf( どれかキーを押すと終了します

Jt j ;

      getchO;

      exit(1);

/***********************************************

一/・

/* make screen *

/***********************************************

void rnakescreenO

  int i;

!* draw rnain screen *!

setvisualpage(MAIN);

setactivepageOtAIN);

!*背景色*/

  setcolor(LIGHTGRAY)I

  setfillstyle(SOLIDJFILL,LIGHTGRAY);

  bar3d(O,O,639,39g,O,O);

/*作図領域*/

  setcolor(BLACK);

  setfillstyle(SOLID−FILL,WHITE);

  bar3d(2,26,440,396,0,0);

  rectangle(4,28,438,394);

/*作図補助領域*/

  setfilIStYle(SOLID FILL,LIGHTBLUE);

  setcolor(WHITE);

  bar3d(446,.2,635,80,0,0) ;   rectangle(446,2,635,80);

/*計測・証明領域*/

  flarne(446,84,635,396,W}IITE,1);

/*メニュー領域*/

  flarne(2,2,440,24,LIGHTCYAN,1);

  for(i=0;iく;6;i++) 

      flarne(i*58−6,4, i*58+54,22,YELLOW,

1) ;

        rnessage(i*58+6,4,i*58+54,22,YELL OW,4,BLACK,bottorn−cmrnd[i]);

      }

  /*メッセージ領域*/

    flarne(450,4,500,22,LIGHTCYAN,1);

    flame(510,4,630,22,LIGHTCYAN,1);

    flame(450,28,630,46,LIGHTRED,1);

    flarne(450,52,630,70,LIGHTRED,1);

/**********************************************/

1* rnain rnenu */

f**********************************************f

vaid rnatB−menuO

{       ・   double x,y;

  int lx;

  int hot;

  flame(450,4,500,22,LIGHTCYAN,1);

  flarne(510,4,630,22,LIGHTCYAN,1);

  rnouse−window(2,2,402,24);

  rnouse−fingerLcsrC25, le) ;   mouse−on O i

message(450,28,630,46,LIGHTRED,8,BLACK,msg[O])

一 168 一

資料 プログラムソース    コmam.C

   message(450,52,630,70,LIGHTRED,8,BLACK, (左

ボタン→決定) );

   mainrnenu−100p:

       clearmmouse−buttonO;

       get.mollseLposition(&x,&y);

       1x=(int)x/58;

       rnouse−offO;

       rnessage(450,4,500,22,LIGHTCYAN,2,BLACK,b ottom7crm d[tx]);

       message(lx*58+6,4,lx*58+54,22,RED,4,WHIT E,bottom−crnmd[lx]);

       rnouse−on O ;        do{

       get−rnouse−position(&x,&y)l        if(mouse−left−buttonO==CLICK){

      rnouse..offOl

      message(lx*58+6,4,lx*58+54,22.YE LLOW,4,BLACK,bottorn−crnmd[lx]);

      rnouse−on O ;       switch(lx){

       case O: draw−menuOi break;

      case 1: cancel menu O; break;

       case 2: rneasure rnenu O ;break;

       case 3: transforrnO;

  break;

       case 4: fileLmenuO;

  break;

       case 5: step−doO;

break;

       case 6: endO; brea kl

      }       }

         /* if(rnouse−right−buttonO==CLICK){

      mouse−of f O ;

      message(lx*58+6,4,lx*58+54,2 2]YELLOW,4,BLACK,bottorn−cmmd[lx]);

      1x=6;

      message(450,4,500,22,LIGHTCY AN,2,BLACK,bottorn−crnmd[lx]); 

      flarne(450,28,630,46,LIGHTRED,

1);

      endO;

      }   */

       }while(lx==(int)x/58);

       mouse−off O ;

       message(450,4,500,22,LIGHTCYAN,2,BLACK,b ottorn−crnrnd[lx]);

       rnessage(lx*58+6,4,lx*58+54,22,YELLOW,4,B LACK,bottom−cmrnd[lx]);

       mouse−on O ;    goto ma inrnenu.loop;

/**********************************************/

.f*  終了      */

/**********************************************!

void endO

    int i;

   unsigned flg;

   void far *ground−data;

   piO;

   mouse offO;

   message(450,28,630,46,LIGHTRED,8,BLACK, 作図

中の図形は消減 );

   rnessage(450,52,630,70,LIGHTRED,8,BLACK, sよろ

しいですか? ):

   ground−data=getTwindow(4g,139,353,238);

   flarne(50,140,350,235,LIGHTRED,2);

   rnouse−window(50,140,350,235);

   mouse−finger−csr(275,215);

   setcolor(BLACK);

   outtextxy(60,150, 警告!!  作図中の図形は 消滅します );

   outtextxy(60,190, (左ボタンで「終了」、右ボタンでメ ニューに戻る〉 );

   flg=kakunin(270,210);

   mouse−off O ;

   put−window(4g,139,ground−data);

    if (flg) {       chousa O ;

       rirekt touroku(END);

       keika.fileO;

       rireki−writeOi       setactivepage( {AIN) ;       setviewport(O,O,399,639,1);

      window(1,1,80,25);

       cleardeviceOi        clrscrO;

      setvisualpage(MAIN);

       closegraphO;

       exit(1);

       }    else {

       clear.rnessageO;

      ma in−menu O ;        }

/**********************************************/

/*  タイトルの表示      */

!**********************************************1

void titleO

   int fl[]={140, 50,14e,230,144,225,144, 55,48 5, 55,490, 50,140, 50};

   int kurni,ban,bot;

   cleardeviceO;

   setcolor(WHITE);

   setfillstyle(SOLID−FILL,WHITE);

   bar3d(O,O,639,39g,O,O);

   setlinestyle(SOLID−LINE,O,NORM−WIDTH);

   setcolor(BLACK);

   setfillstyle(SOLID−PILL,DARKGRAY);

   bar(140, 50,490,230)l

   setfillstyle(SOLID−FILL,RED);

   bar(145, 55,485,225);

   setfillstyle(SOLID−FILL,RED+8);

   fillpoly(7,fl);

   setcolor(RED);

   正ine(140, 50,145, 55>;

   1ine(486,226,490,23e);

   setcolor(WHITE);

   settextstyle(O,O,1);

   outtextxy(150,60, 「平面図形の性質探求」

ソフトウェア );

   settextstyle(O,O,4);

   setcolor(BLACK);

   outtextxy(189.,90, 幾何ん坊 );

   outtextxy(187,88, 幾何ん坊 );

   setcolor(WHITE);

   outtextxy(185,86, 幾何ん坊 );

   outtextxy(183,84, 幾何ん坊 );.

   settextstyte(e,O,1);

   outtextxy(150,180, V e r.1.0 (履歴記.録 版1994/7/10) );

   outtextxy(150,200, 【開 発】京都府立桃山高

等学校 大西俊弘 〉;

   flame(100,250,540,340,LIGHTCYAN,3);

   message(120,260,540,280,LIGHTCYAN,8,BLACK,

      一  謝辞   一 );