发信人: chen82607(chen82607) 
整理人: yangcs(2004-10-14 14:22:35), 站内信件
 | 
 
 
#include "graphics.h"
 #include "math.h"
 #include "ctype.h"
 #define UP 0
 #define DOWN 1
 typedef int penState;
 typedef struct{
 	    float v,h;}aPoint;
 typedef struct{
 	       float heading;
 	       penState pen;
 	       int color;
 	       aPoint Pos;
 	       }newTurtle;
 newTurtle Turtle;
 main()
 {
  int driver,mode,steps=1;
  char ch;
  driver=VGA;mode=VGAHI;
  initgraph(&driver,&mode,"");
  settextstyle(1,HORIZ_DIR,4);
  outtextxy(10,20,"MADE BY Chen XiaoMing");
  outtextxy(10,50,"Computer Studen 2001402050783");
  outtextxy(10,80,"Program 0");
  outtextxy(10,110,"Press the 's' to start");
  outtextxy(10,140,"Peess the Esc to exit");
  ch=getch();
  while(ch!='s')
  {ch=getch();
   if(ch==27)exit();}
  clearviewport();
  settextstyle(1,HORIZ_DIR,2);
  setcolor(4);
  while(1)
  {outtextxy(10,20,"s:Reset, u:PenUp, d:PenDown, m:Move, l:TurnLeft, r:TurnRight");
   outtextxy(10,40,"+:AddSteps, -:MuSteps");
   switch(ch)
   {
     case 's':StartTurtle();Prin(steps);steps=1;break;
     case 'u':PenUp();break;
     case 'd':PenDown();break;
     case 'm':Move(steps);break;
     case 'l':Prin1(steps);HeadingLeft();Prin(steps);break;
     case 'r':Prin1(steps);HeadingRight();Prin(steps);break;
     case 'c':SetColor();setcolor(Turtle.color);
     outtextxy(10,20,"s:Reset, u:PenUp, d:PenDown, m:Move, l:TurnLeft, r:TurnRight");
     outtextxy(10,35,"+:AddSteps, -:MuSteps");break;
     case 'o':circle(Turtle.Pos.v,Turtle.Pos.h,5*steps);break;
     case '+':steps+=1;break;
     case '-':steps-=1;break;
     case 27:exit();
   }
   ch=getch();
 }
 }
 StartTurtle()
 { Turtle.heading=0;
   Turtle.pen=DOWN;
   Turtle.color=4;
   Turtle.Pos.v=320;
   Turtle.Pos.h=160;
   }
 PenUp()
 {Turtle.pen=UP;}
 PenDown()
 {Turtle.pen=DOWN;}
 Move(int steps)
 {int x,y;
  x=Turtle.Pos.v+ceil(steps*5*cos(Turtle.heading));
  y=Turtle.Pos.h+ceil(steps*5*sin(Turtle.heading));
  if(Turtle.pen==DOWN)
  line(Turtle.Pos.v,Turtle.Pos.h,x,y);
  Turtle.Pos.v=x;
  Turtle.Pos.h=y;
  }
 HeadingLeft()
 {Turtle.heading-=0.5;}
 HeadingRight()
 {Turtle.heading+=0.5;}
 SetColor()
 {Turtle.color++;
  if(Turtle.color>15)Turtle.color=1;}
 Prin1(int steps)
 { int x,y;
 setcolor(0);
  x=Turtle.Pos.v+ceil(steps*5*cos(Turtle.heading));
  y=Turtle.Pos.h+ceil(steps*5*sin(Turtle.heading));
  if(Turtle.pen==DOWN)
  line(Turtle.Pos.v,Turtle.Pos.h,x,y);}
 Prin(int steps)
 {int x,y;
  setcolor(Turtle.color);
  x=Turtle.Pos.v+ceil(steps*5*cos(Turtle.heading));
  y=Turtle.Pos.h+ceil(steps*5*sin(Turtle.heading));
  if(Turtle.pen==DOWN)
  line(Turtle.Pos.v,Turtle.Pos.h,x,y);}
 
  ----    .  ======= 
       / \| O   O |
       \ /  \v_'/
        #   _| |_
       (#) (     )
        #\//|* *|\\     报
        #\/(  *  )/     上
        #   =====       名
        #   (\ /)       来
        #   || ||        !
       .#---'| |----.
        #----' -----' | 
 
 
 |