精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>未整理到对应目录的文章>>海龟作图---源代码

主题:海龟作图---源代码
发信人: 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);}


----
 ho.ho. 

[关闭][返回]