求助,我这个贪吃蛇前半边未开始吃怎么不能显示和动啊?
<P><BR>/* Note:Your choice is C IDE */<BR>#include "stdio.h"<BR>#include "stdlib.h"<BR>#include "graphics.h"<BR>#include "conio.h"<BR>#define UP 0x4800/*光标上键值*/<BR>#define DOWN 0x5000/*光标下键值*/<BR>#define LEFT 0x4b00/*光标左键值*/<BR>#define RIGHT 0x4d00/*光标右键值*/<BR>int n=2;</P>
<P>void startmove();<BR>void changexy();<BR>void drawbody();</P>
<P>struct snake /*蛇头的坐标*/<BR>{<BR> int headx1;<BR> int heady1;<BR> int headx2;<BR> int heady2;<BR> int tailx3;<BR> int taily3;<BR>};<BR>void changexy()<BR>{<BR> int i;<BR> struct snake body[40];<BR> for(i=n-1;i>0;i--)<BR> {<BR> body[i].headx1=body[i-1].headx1;<BR> body[i].heady1=body[i-1].heady1;<BR> body[i].headx2=body[i-1].headx2;<BR> body[i].heady2=body[i-1].heady2;<BR> body[i].tailx3=body[i-1].tailx3;<BR> body[i].taily3=body[i-1].taily3;<BR> }<BR>}<BR>snakebody() /*蛇的身体*/<BR>{<BR> int i;<BR> struct snake body[40];<BR> for(i=0;i<n;i++)<BR> {<BR> setcolor(GREEN);<BR> setlinestyle(0,0,3);<BR> rectangle(body[i].tailx3,body[i].taily3,body[i].headx2,body[i].heady2);<BR> }<BR>}<BR>void startmove()/*蛇开始运动*/<BR>{<BR> int i,j,key;<BR> struct snake body[40]={{20,0,20,10,10,0},<BR> {10,0,10,10,0,0}};<BR> while(1)<BR> {<BR> while(!kbhit())<BR> {<BR> if(body[0].headx1>body[0].tailx3&&body[0].headx1<400)/*向右运动*/<BR> {<BR> changexy();<BR> body[0].headx1+=10;<BR> body[0].headx2+=10;<BR> body[0].tailx3+=10;<BR> drawbody();<BR> }<BR> if(body[0].headx1<body[0].tailx3&&body[0].headx1>0)/*向左运动*/<BR> {<BR> changexy();<BR> body[0].headx1-=10;<BR> body[0].headx2-=10;<BR> body[0].tailx3-=10;<BR> drawbody();<BR> }<BR> if(body[0].heady1<body[0].taily3&&body[0].heady1>0)/*向上运动*/<BR> {<BR> changexy();<BR> body[0].heady1-=10;<BR> body[0].heady2-=10;<BR> body[0].taily3-=10;<BR> drawbody();<BR> }<BR> if(body[0].heady1>body[0].taily3&&body[0].heady1<300)/*向下运动*/<BR> {<BR> changexy();<BR> body[0].heady1+=10;<BR> body[0].heady2+=10;<BR> body[0].taily3+=10;<BR> drawbody();<BR> }<BR> delay(100000);<BR> clearviewport();<BR> }<BR> }<BR> key=bioskey(0);<BR> if(key==UP&&body[0].heady1>0)<BR> {<BR> changexy();<BR> changeup();<BR> drawbody();<BR> delay(100000);<BR> clearviewport();<BR> }<BR> if(key==DOWN&&body[0].heady1<300)<BR> {<BR> changexy();<BR> changedown();<BR> drawbody();<BR> delay(100000);<BR> clearviewport();<BR> }<BR> if(key==LEFT&&body[0].headx1>0)<BR> {<BR> changexy();<BR> changeleft();<BR> drawbody();<BR> delay(100000);<BR> clearviewport();<BR> }<BR> if(key==RIGHT&&body[0].headx1<400)<BR> {<BR> changexy();<BR> changeright();<BR> drawbody();<BR> delay(100000);<BR> clearviewport();<BR> }<BR>}</P>
<P>void drawbody()<BR>{<BR> int i;<BR> struct snake body[40];<BR> for(i=0;i<n;i++)<BR> rectangle(body[i].tailx3,body[i].taily3,body[i].headx2,body[i].heady2);<BR>}<BR>changeup()/*变为向上运动的变化*/<BR>{<BR> struct snake body[40];<BR> changexy();<BR> if(body[0].headx1>body[0].tailx3)/*由向右运动改为向上*/<BR> {<BR> body[0].headx1-=10;<BR> body[0].heady1-=10;<BR> body[0].heady2-=20;<BR> }<BR> if(body[0].headx1<body[0].tailx3)/*由向左运动改为向上*/<BR> {<BR> body[0].heady1-=10;<BR> body[0].headx2+=10;<BR> body[0].heady2-=20;<BR> body[0].tailx3-=10;<BR> }<BR> drawbody();<BR>}<BR>changedown()/*变为向下运动的变化*/<BR>{<BR> struct snake body[40];<BR> changexy();<BR> if(body[0].headx1>body[0].tailx3)/*由向右运动改为向下*/<BR> {<BR> body[0].headx1-=10;<BR> body[0].heady1+=20;<BR> body[0].heady2+=10;<BR> body[0].taily3+=10;<BR> }<BR> if(body[0].headx1<body[0].tailx3)/*由向左运动改为向下*/<BR> {<BR> body[0].heady1+=20;<BR> body[0].headx2+=10;<BR> body[0].heady2+=10;<BR> body[0].tailx3-=10;<BR> body[0].taily3+=10;<BR> }<BR> drawbody();<BR>}<BR>changeleft()/*变为向左运动的变化*/<BR>{<BR> struct snake body[40];<BR> changexy();<BR> if(body[0].heady1<body[0].taily3)/*由向上运动改为向左*/<BR> {<BR> body[0].headx1-=10;<BR> body[0].headx2-=20;<BR> body[0].heady2+=10;<BR> body[0].tailx3-=10;<BR> body[0].taily3-=10;<BR> }<BR> if(body[0].heady1>body[0].taily3)/*由向下运动改为向左*/<BR> {<BR> body[0].headx1-=10;<BR> body[0].heady1-=10;<BR> body[0].headx2-=20;<BR> }<BR> drawbody();<BR>}<BR>changeright()/*变为向右运动的变化*/<BR>{<BR> struct snake body[40];<BR> changexy();<BR> if(body[0].heady1<body[0].taily3)/*由向上运动改为向右*/<BR> {<BR> body[0].headx1+=20;<BR> body[0].headx2+=10;<BR> body[0].heady2+=10;<BR> body[0].tailx3+=10;<BR> body[0].taily3-=10;<BR> }<BR> if(body[0].heady1>body[0].taily3)/*由向下运动改为向右*/<BR> {<BR> body[0].headx1+=20;<BR> body[0].heady1-=10;<BR> body[0].headx2+=10;<BR> body[0].tailx3+=10;<BR> }<BR> drawbody();<BR>}<BR>main()<BR>{<BR> int driver,mode;/*设置系统进入图形模式*/<BR> driver=VGA;mode=VGAHI;<BR> initgraph(&driver,&mode,"C:\\tc");<BR> setcolor(1);<BR> rectangle(50,80,470,400);/*贪吃蛇界面*/<BR> rectangle(60,90,460,390);<BR> setfillstyle(SOLID_FILL,BLUE);<BR> floodfill(55,85,BLUE);<BR> setviewport(60,90,460,390,1);<BR> <BR> <BR> snakebody();<BR> startmove();<BR> getch();<BR> <BR>}<BR> 这是我自己写的第一个比较大一点的程序,可能代码很繁冗,希望大家能帮我把不能显示和运动的问题指明一下,在下感谢不敬!!!<BR> </P>
<P><U><FONT color=#800080></FONT></U><U><FONT color=#800080>ff<BR> </FONT></U></P> <P>好强呀!</P>
<P><BR>此主题相关图片如下:<BR></P>
页:
[1]
