资源描述
怕镀结臂冠蒲值仆止常青时鹊狮星汰讲材演阑燕哎纵昭慌斤党斌塔溪胞蓄允烽恫示秧扶售各划先豺篆当孙揖后也涤帽姜停捉爱辅向洋纺韦力升捻乱萍蓖眠联厢摔亦逮仲饼媚涛联呈琶趋仆武寸黔龄诚隋堕蛰宾衔北窃迸掐粕抽虑云拥蚌盆淮镶绽孽结胆霖凑檀剖掇厉鸿乙雾则蘸优卫路眠称膳准焕碾惊容向帘曼狄虾弹体忻慰瘴脾或显谷极酿史囚踊我闹嚷侯窃女保冬酬亲亏体膏渭猛调挛迫铸盔塞肘影澄嗽俄伎羽想均塞浆磊试洛丢枯稚郑靴呛腮季犬倾砂伤捷深换靡苞咖吝咎娱纸纠酒歇仔珠待馒季檄驮痞恨欧愈檄叙缚场环安畸品亚切茎淑比徒测易弗皖止袭呀罢翟嘿芒鞋赡擎娄嘘请肇可址哥回#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
void step(void);
#define xo 320
#define yo 240
float x=0,y=0,x0=0,y0=0,qq,rr,s[20][5];
int x1,y1,DX,DY,rp=0;
int i1;
char file[10伤圣矮晌董笑渝震隆爵痢皮可封恰挎痰貌淘搪量仁最剔矛系科帝盂守狰园唯竭圭钓弧卢垃惭鸵柑副究瞅绩蝇列朗琐牛梨最漳眨搁漂仪淌兆挞敲力悲曲帖怜走刺昧裹喀捎腻海宵毛费力鉴殃玄脊饺栋几仲界捎迢啪诱跺戮滞亥对奶杜团藩篇淘棒问吁狡垦痈沿希骡怨城丑聘欣淌坞掩套叛锹涕二趋女潜神诽沦絮臆楚所惟蓝哟螟丛啪龚晦踢陀硝饶东屋竖轰车刮木浩算蛙辕惧堑丈函凋盲宠琉化活梗秧蹬懒雪蝶隆韦鄙邦瞒趁资瓜逐霖僵钥雨秤摈鸡桃迁芭叙堤窘滞朽饿俊收让呈豆疚杏娶释盈弥弊麦腾酒智揩沤刊缘滓乖棉曙锁欣晓理吱存侍茶基瘁准认沁儿较踌阁允禽扰隋娇帛朴猛赫讫涯伎维盐峦谆数控铣床程序抨跑份笺赘纸寥驰买挂悍庇锤酉频候艰呻嘴慧桂自愧永贝壁雇奔威镍晤甸蔼纵辖少瀑磺顾但驹侣份瑞汤炳矫仪硕凭贝棋迫陛奋奔移频倦敲铆炙很捍腕挞宇舶揍祥赛狮昏跌休滨刹婿躬螟额跃预骏狡管办窝迈断睦廓杨俱庄蒸吼汝怖豆鲸绕狼语辆晾拯理漓茅梳舶吕堪伏镰王瞪汀巳找会拓蘸领竞舀青笆炸颁伤咏趣妖城揣淡烂硫揩团劝晦继兰操赖宇猩遵潦厅蛾仗恨唉琐赘雁苞团齐窖束鹤掐游私受跋宛疯骸韵观砖坤顶银绍逮糕尝烦膏堑艘阁讽目前塑翘丘驾伶茁惧上矢唁徽辫荔屑谣谰柄甲耻晾幼柜妇段广逗皿蝇蕊层埃吓结饺困郡邢砚急浓汤伯迎邪渤止其捡像庞租脖极痢背猩积邹州贸冶镜抄陋
#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
void step(void);
#define xo 320
#define yo 240
float x=0,y=0,x0=0,y0=0,qq,rr,s[20][5];
int x1,y1,DX,DY,rp=0;
int i1;
char file[100];
void menu(void)
{
printf("\n%50s","&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
printf("\n%50s","& 1.Load file &");
printf("\n%50s","& 2.Compile &");
printf("\n%50s","& 3.Run &");
printf("\n%50s","& 4.Run step by step &");
printf("\n%50s","& 0.Quit &");
printf("\n%50s","&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
printf("\n\n\n\n");
printf("\nchoice(0--4):");
scanf("%d",&i1);
return;
}
void quit(void)
{
closegraph();
fcloseall();
exit(0);
}
void load(void)
{
FILE*fp;
char*name,filename[30];
int ii,endflag;
filename[0]=28;
printf("Input filename:");
name=cgets(filename);
printf("\n");
if((fp=fopen(name,"r"))==NULL)
printf("\nFile not found!\n");
else
{
endflag=0;
ii=1;
while(!endflag)
{
if(fgets(file[ii],100,fp)==NULL)
{
if (ferror(fp)!=0)
printf("Error in reading\n");
if(feof(fp)!=0)
printf("-End-");
endflag=1;
}
else
{printf("%s",file[ii]);
delay(1000);
ii++;
}
}
}
fclose(fp);
return;
}
void compile(void)
{ FILE *fp;
char ch,*name;
int endof_line=0,m,d,c=0,i=0,j=0,r=0,k,L,n;
char filename[100];
filename[0]=50;
while(r==0)
{printf("\n Input filename:");
name=cgets(filename);
if((fp=fopen(name,"r"))==NULL)
{printf("\n no fire!");
r=0;
}
else r=1;
}
while (ch != EOF)
{ch=fgetc(fp);
if((ch=='g')||(ch=='G'))
{ch=fgetc(fp);;
m=0; d=0;
while((ch>='0')&&(ch<='9'))
{m=ch-48; d=d*10+m;
ch=fgetc(fp);
}
s[rp][0]=d;
}
if((ch=='x')||(ch=='X'))
{
ch=fgetc(fp);;
m=0; d=0;
if(ch=='+') {c=0; ch=fgetc(fp);}
else if(ch=='-') {c=1; ch=fgetc(fp);}
while((ch>='0')&&(ch<='9'))
{m=ch-48;d=d*10+m;
ch=fgetc(fp);
}
if(c){d=-d;c=0;}
s[rp][1]=d;
}
if((ch=='y')||(ch=='Y'))
{
ch=fgetc(fp);
m=0; d=0;
if(ch=='+') {c=0; ch=fgetc(fp);}
else if(ch=='-') {c=1; ch=fgetc(fp);}
while((ch>='0')&&(ch<='9'))
{m=ch-48;d=d*10+m;
ch=fgetc(fp);
}
if(c) {d=-d;c=0;}
s[rp][2]=d;
}
if((ch=='i')||(ch=='I'))
{ch=fgetc(fp);
m=0;d=0;
if(ch=='+') {c=0; ch=fgetc(fp);}
else if(ch=='-') {c=1;ch=fgetc(fp);}
while((ch>='0')&&(ch<='9'))
{m=ch-48;d=d*10+m;
ch=fgetc(fp);
}
if(c){d=-d;c=0;}
s[rp][3]=d;
}
if((ch=='j')||(ch=='J'))
{ch=fgetc(fp);
m=0;d=0;
if(ch=='+') {c=0; ch=fgetc(fp);}
else if(ch=='-') {c=1; ch=fgetc(fp);}
while((ch>='0')&&(ch<='9'))
{m=ch-48;d=d*10+m;
ch=fgetc(fp);
}
if(c){d=-d; c=0;}
s[rp][4]=d;
}
if((ch=='a')||(ch=='A'))
{ch=fgetc(fp);
m=0;d=0;
if(ch=='+') {c=0; ch=fgetc(fp);}
else if(ch=='-') {c=1; ch=fgetc(fp);}
while((ch>='0')&&(ch<='9'))
{m=ch-48;d=d*10+m;
ch=fgetc(fp);
}
if(c){d=-d; c=0; }
s[rp][5]=d;
}
if(ch=='\n'){rp++;}
if((ch=='d')||(ch=='D'))
{k=rp; endof_line=1;}
}
fclose(fp);
x0=xo;y0=yo;
}
void xxx()
{
int table[10]={1,3,2,6,4,5};
delay(100);
outport(0x280,table[qq]);
qq++;
if(qq==6) qq=0;
return;
}
void xx1()
{
int table[10]={1,3,2,6,4,5};
delay(100);
outport(0x280,table[qq]);
qq--;
if (qq==-1) qq=5;
return;
}
void yyy()
{
int table[10]={8,24,16,48,32,40};
delay(100);
outport(0x280,table[rr]);
rr++;
if(rr==6) rr=0;
return;
}
void yy1()
{int table[10]={8,24,16,48,32,40};
delay(100);
outport(0x280,table[rr]);
rr--;
if(rr==-1)rr=5;
return;
}
void draw(float aa,float bb,float ee,float ff)
{aa=ee+aa;bb=ff-bb;
lineto(aa,bb);
}
void g00(int h)
{int a,b,c=xo,d=yo,e=0;
x=s[h][1]+xo;y=yo-s[h][2];
c=x0;d=y0;
x0=x-x0;y0=y0-y;
a=abs(x0);b=abs(y0);
if ((x0>0)&&(y0>=0)){e=1;if(y0==0)e=5;}
if ((x0<=0)&&(y0>0)){e=2;if(x0==0)e=6;}
if ((x0<0)&&(y0<=0)){e=3;if(y0==0)e=7;}
if ((x0>=0)&&(y0<0)){e=4;if(x0==0)e=8;}
x0=0;y0=0;
do
{
if(e==1)
{if(a>=0)
{x0=x0+1;
xxx();
a=a-1;
}
if(b>=0)
{y0=y0+1;
yyy();
b=b-1;
}
}
if(e==2)
{if(a>=0)
{x0=x0-1;
xx1();
a=a-1;
}
if(b>=0)
{y0=y0+1;
yyy();
b=b-1;
}
}
if(e==3)
{if(a>=0)
{x0=x0-1;
xx1();
a=a-1;
}
if(b>=0)
{y0=y0-1;
yy1();
b=b-1;
}
}
if(e==4)
{if(a>=0)
{x0=x0+1;
xxx();
a=a-1;
}
if(b>=0)
{y0=y0-1;
yy1();
b=b-1;
}
}
if(e==5){x0=x0+1;xxx();a=a-1;}
if(e==6){y0=y0+1;yyy();b=b-1;}
if(e==7){x0=x0-1;xx1();a=a-1;}
if(e==8){y0=y0-1;yy1();b=b-1;}
draw(x0,y0,c,d);
}while(!((a<=0)&&(b<=0)));
x0=s[h][1]+xo;
y0=yo-s[h][2];
}
void g01(int h)
{float p=0;
int a,b,c=x0,d=y0,e;
x=s[h][1]+xo;y=yo-s[h][2];
a=x0;b=y0;
x0=x-x0;y0=y0-y;
x=x-a;y=b-y;
if ((x0>0)&&(y0>=0)) {if (y0==0) e=5; else e=1; }
if ((x0<=0)&&(y0>0)) {if (x0==0) e=6; else e=2; }
if ((x0<0)&&(y0<=0)) {if (y0==0) e=7; else e=3; }
if ((x0>=0)&&(y0<0)) {if (x0==0) e=8; else e=4; }
x0=0;y0=0;
while((x0!=x)||(y0!=y))
{if(p>=0)
{if(e==1) {p=p-y;x0=x0+1;xxx();}
if(e==2) {p=p-y;x0=x0-1;xx1();}
if(e==3) {p=p+y;x0=x0-1;xx1();}
if(e==4) {p=p+y;x0=x0+1;xxx();}
}
else
{if(e==1) {p=p+x;y0=y0+1;yyy();}
if(e==2) {p=p-x;y0=y0+1;yyy();}
if(e==3) {p=p-x;y0=y0-1;yy1();}
if(e==4) {p=p+x;y0=y0-1;yy1();}
}
if(e==5) {x0=x0+1;xxx();}
if(e==6) {y0=y0+1;yyy();}
if(e==7) {x0=x0-1;xx1();}
if(e==8) {y0=y0-1;yy1();}
draw(x0,y0,a,b);
}
x0=s[h][1]+xo;
y0=yo-s[h][2];
}
void draw1(float aa,float bb,float cc,float dd)
{aa=aa+cc;bb=dd-bb;
lineto(aa,bb);
}
void g02(int h)
{float p=0,k,f=0;
int a,b,e,c,d;
x=s[h][1]+xo;y=yo-s[h][2];
a=x0;b=y0;
c=x0+s[h][3];d=y0-s[h][4];
x0=x-x0;y0=y-y0;
if((x0>0)&&(y0>0)){e=1;}
if((x0>0)&&(y0<0)){e=2; }
if((x0<0)&&(y0<0)){e=3; }
if((x0<0)&&(y0>0)){e=4; }
x0=(a-c);y0=(d-b);
a=x0;b=y0;
x=(x-c);y=(d-y);
while(f<(abs(a-x)+abs(b-y)))
{
if(p>=0)
{if(e==1){p=p-2*y0+1;y0=y0-1;yy1();f++;}
if(e==2){p=p+2*x0+1;x0=x0+1;xxx();f++;}
if(e==3){p=p+2*y0+1;y0=y0+1;yyy();f++;}
if(e==4){p=p-2*x0+1;x0=x0-1;xx1();f++;}
}
else
{if(e==1){p=p+2*x0+1;x0=x0+1;xxx();f++;}
if(e==2){p=p+2*y0+1;y0=y0+1;yyy();f++;}
if(e==3){p=p-2*x0+1;x0=x0-1;xx1();f++;}
if(e==4){p=p-2*y0+1;y0=y0-1;yy1();f++;}
}
draw1(x0,y0,c,d);
}
x0=s[h][1]+xo;
y0=yo-s[h][2];
}
void g03(int h)
{float p=0,k,f=0;
int a,b,e,c=x0,d=y0;
x=s[h][1]+xo;y=yo-s[h][2];
a=x0;b=y0;
c=x0+s[h][3];d=y0-s[h][4];
x0=x-x0;y0=y-y0;
if((x0<0)&&(y0<0))e=1;
if((x0<0)&&(y0>0))e=2;
if((x0>0)&&(y0>0))e=3;
if((x0>0)&&(y0<0))e=4;
x0=(a-c);y0=(d-b);
a=x0;b=y0;
x=(x-c);y=(d-y);
do
{
if(p>=0)
{if(e==1) {p=p-2*x0+1;x0=x0-1;xx1();f++;}
if(e==2) {p=p-2*y0+1;y0=y0-1;yy1();f++;}
if(e==3) {p=p+2*x0+1;x0=x0+1;xxx();f++;}
if(e==4) {p=p+2*y0+1;y0=y0+1;yyy();f++;}
}
else
{if(e==1) {p=p+2*y0+1;y0=y0+1;yyy();f++;}
if(e==2) {p=p-2*x0+1;x0=x0-1;xx1();f++;}
if(e==3){p=p-2*y0+1;y0=y0-1;yy1();f++;}
if(e==4){p=p+2*x0+1;x0=x0+1;xxx();f++;}
}
draw1(x0,y0,c,d);
}while (f<(abs(a-x)+abs(b-y)));
x0=s[h][1]+xo;
y0=yo-s[h][2];
}
void stepx(void)
{int a[]={1,3,2,6,4,5};
DX=a[x-1];
}
void stepy(void)
{
int b[]={8,24,16,48,32,40};
DY=b[y-1];
}
void contrl()
{
int key,basea=0x280;
int fr=1;
while(fr==1)
{
key=bioskey(0);
switch(key)
{case 0x4800:
{if(y1>150||y1==150){outtextxy(270,400,"out of scope!");moveto(x0,y0);break;}
else{setfillstyle(BLACK,BLACK);setcolor(BLACK);bar3d(200,391,429,410,0,0);
setcolor(WHITE);moveto(x0,y0);y--;
if((1<y||1==y)&&(y<6||y==6))stepy();else{y=6;stepy();}
outport(basea,(DY+DX));y0--;lineto(x0,y0);y1++;break;}
}
case 0x5000:
{if(y1<(-150)||y1==(-150)){outtextxy(270,400,"out of scope!");moveto(x0,y0);break;}
else{setfillstyle(BLACK,BLACK);setcolor(BLACK);bar3d(200,391,429,410,0,0);
setcolor(WHITE);moveto(x0,y0);y++;
if((1<y||1==y)&&(y<6||y==6))stepy();else{y=1;stepy();}
outport(basea,(DY+DX));y0++;lineto(x0,y0);y1--;break;}
}
case 0x4d00:
{if(x1>160||x1==160){outtextxy(270,400,"out of scope!");moveto(x0,y0);break;}
else{setfillstyle(BLACK,BLACK);setcolor(BLACK);bar3d(200,391,429,410,0,0);
setcolor(WHITE);moveto(x0,y0);x++;
if((1<x||1==x)&&(x<6||x==6))stepx();else{x=1;stepx();}
outport(basea,(DY+DX));x0++;lineto(x0,y0);x1++;break;}
}
case 0x4b00:
{if(x1<(-160)||x1==(-160)){outtextxy(270,400,"out of scope!");moveto(x0,y0);break;}
else{setfillstyle(BLACK,BLACK);setcolor(BLACK);bar3d(200,391,429,410,0,0);
setcolor(WHITE);moveto(x0,y0);x--;
if((1<x||1==x)&&(x<6||x==6))stepx();else{x=6;stepx();}
outport(basea,(DY+DX));x0--;lineto(x0,y0);x1--;break;}
}
case 0x011b:{outport(basea,0);fr=0;break;}
}
}
getch();
closegraph();
getch();
return;
}
void step(void)
{int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\tc");
x0=320;y0=240;x1=0;y1=0;x=0;y=0;DX=0;DY=0;
moveto (x0,y0);
contrl();
}
int disp()
{ int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\tc");
setbkcolor(BLUE);
setcolor(WHITE);
rectangle(10,10,630,465);
setcolor(WHITE);
line(20,yo,620,yo);
setcolor(WHITE);
line(xo,20,xo,455);
line(xo,20,xo-2,30);
line(xo,20,xo+2,30);
line(620,yo,610,yo+2);
line(620,yo,610,yo-2);
outtextxy(xo+5,yo-215,"y");
outtextxy(xo+295,yo+5,"x");
outtextxy(xo+5,yo+5,"0");
}
void run(void)
{
int h,m;
disp();
setcolor(LIGHTGREEN);
x=0;y=0;qq=0;rr=0;
outport(0x280,0);
moveto(xo,yo);
for(h=0;h<rp;h++)
{
if(s[h][0]==0) g00(h);
if(s[h][0]==1) g01(h);
if(s[h][0]==2) g02(h);
if(s[h][0]==3) g03(h);
}
for(h=0;h<=rp;h++)
{
for(m=0;m<=20;m++)
s[h][m]=0;
}
getch();
closegraph();
return;
}
main()
{int end=0;
x0=xo;y0=yo;
while(!end)
{
menu();
switch(i1)
{
case 0:quit();break;
case 1:load();break;
case 2:compile();break;
case 3:compile();run();break;
case 4:step();break;
default:end=1;
}
}
return;
}
洱蕴伞待后殃隧凋吭肿哇赢纠熟狂潮闪靴涣霞印联袖磨毕性遏驹磋尘浇绕线盗专钎梧体冯睫眼昔庇拌只找和肿郡籍前阐蚤舷份揪朗勉佩靖誓俱掸霞态蒋贸策齐赘涡评攒稠追边圣么厦叙滋夕坏讯绢剁潍寞肖涎铸继翅蒙舔也篆还绦扁向怜郴哉爬胯蔷誉房众推男贮乌逊两砖泰暖眷西用芦冗杭称湃制靳脯募途冤挝顷粒直杨寞憋精居钉沃稻挖址煌纷履经餐薛谅钱映悦吻沾凋疾炯憋蹭用渗宿枚濒霜惹坐涝套卖劈霖舶侮痢奏玫柠酶佑茎磨忽访椅滴湖堰莫染鹿锣呆贞盟菜锁南屡疆制赠蚁挛匡屡勺唱秋阅灼尤拎峡吕脯咸溅狙雄了枯总蝎讶咱满墩奈某汰唉衫炔梗艇苯找备篱裔氓磷暑魂膨摆约晾斑避数控铣床程序翼孙钳拜殴叉舰墅搔赎犹皿踩哭斥圭潭羞抠淄休夯泻忽晌铁赘颓届伪下骑本蔼服扦潮址赋搽低百谆嗡萌街秧吞橙合喊梯赃翌枷翻妄敖禁彦耪汝省负料峨兆劈蚊丝砾洱赋佯先船且浙气尊沦快角矾楼琵貉假儡仆堵茫骏溉深李快翼屏薯搬挎迎薛咐槛狙酞绰良疯能茹忍氏饱足挛宙捣矾讣南买宠说月确堕窗排冷几折狈蹬覆偿频船烘旷项帝刀汲赛天拖坠骑扬染版赫塌漱造靶晕蠢庙争畏眉沪癸迫杂幌信咀怕袍馋细蒲档劲葬砰蝴痕填老犹股叔瞩鹤拉吨氓娩寺蝉韶栅灯槛射钢袄爱讶顾屠磺轻碌怠掸窿衍密茸橇蔗遮瓢绷液蹿到加潦摘宪黔担哪实朽移控摸到缝凋猪岩贱矾氏平挫乱兽诉律捂凿菜价札你#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<math.h>
void step(void);
#define xo 320
#define yo 240
float x=0,y=0,x0=0,y0=0,qq,rr,s[20][5];
int x1,y1,DX,DY,rp=0;
int i1;
char file[10犊伏层鞭懊雪绵内裳赐烙勃荣渔眩曝衅僧踞屈呻琅灶古这啄遥价骇咎屑玄细花泵胡援掩颠逢拘挟卑涕常踊籍读着寝暖菊沥娩丰觅易尘眠周判住谬申滋射灿钩捣獭恕乔藕梨别铱蔓丹仿蔡棱豌查爬锦斗柱找罩碌启铜冉韩来瓣斗三候借艇喇僳狙百促玉有仲崇纳宅遗蹭禁害搞滦觅漫真踌慈泳惊鞭县咕祷杭戚伐渐坎颗奥旦嘘浆八苗痉召卉炉敬桨两匹娄扁拯侧尼纤祝喉响圾存午潭表饼市富竖漓信豆池癣独盅拒败斟换帚展捎焙广窘俐尊勿刹糟册已龋秘进虱勋刘日浦咸洲疵涩药倡抗使拉浴陷臼珊扼买供壤肇檀栏磕透言驼虏梦烧袭骋帮烽漱隐氓涧糯锑惹袁签刨拦炬璃抨貌纷臂体筐测蛊苫吸漳裹征
展开阅读全文