编程论坛's Archiver

tovey2008 发表于 2007-10-15 22:32

求助,我这个贪吃蛇前半边未开始吃怎么不能显示和动啊?


<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&gt;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&lt;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&gt;body[0].tailx3&amp;&amp;body[0].headx1&lt;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&lt;body[0].tailx3&amp;&amp;body[0].headx1&gt;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&lt;body[0].taily3&amp;&amp;body[0].heady1&gt;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&gt;body[0].taily3&amp;&amp;body[0].heady1&lt;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&amp;&amp;body[0].heady1&gt;0)<BR>    {<BR>        changexy();<BR>        changeup();<BR>        drawbody();<BR>        delay(100000);<BR>        clearviewport();<BR>    }<BR>    if(key==DOWN&amp;&amp;body[0].heady1&lt;300)<BR>    {<BR>        changexy();<BR>        changedown();<BR>        drawbody();<BR>        delay(100000);<BR>        clearviewport();<BR>    }<BR>    if(key==LEFT&amp;&amp;body[0].headx1&gt;0)<BR>    {<BR>        changexy();<BR>        changeleft();<BR>        drawbody();<BR>        delay(100000);<BR>        clearviewport();<BR>    }<BR>    if(key==RIGHT&amp;&amp;body[0].headx1&lt;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&lt;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&gt;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&lt;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&gt;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&lt;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&lt;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&gt;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&lt;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&gt;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(&amp;driver,&amp;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>

eakcon 发表于 2007-11-14 10:08

<P><U><FONT color=#800080></FONT></U><U><FONT color=#800080>ff<BR> </FONT></U></P>

eakcon 发表于 2007-11-14 10:09

<P>好强呀!</P>
<P><BR>此主题相关图片如下:<BR></P>

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.