小妹刚学c语言,这些天编一个蛇吃蛋的游戏但是编好后蛇对键盘的反应不是很灵敏,而且吃了几个蛋后就死了.
我不知道是什么原因,请好心人帮帮小妹,小妹不胜感激了.
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
void main(void)
{int gdriver , gmode ,A[20][2],B[20][20],q,j,k,front=0,rear_1=9,rear_2=8 ,x,y,a,b=0;
char i; gdriver=DETECT ;
for(j=0;j<=19;j++){for(k=0;k<=19;k++) B[j][k]=0;}
initgraph(&gdriver, &gmode, "");setcolor(YELLOW);
rectangle(0,0,200,200);
setwritemode(XOR_PUT);setcolor(RED);randomize();
j=rand()%20; k=rand()%19+1;
B[j][k]=2;rectangle(10*j,10*k,10*j+10,10*k+10);
for(q=1;q<=10;q++){
rectangle(q*10-10,0,q*10,10);A[q-1][0]=q*10-5;A[q-1][1]=5;B[q-1][0]=1;}
delay(100000);
while(1){
while(!kbhit()){
if(A[rear_1][0]==A[rear_2][0]){
if(A[rear_1][1]-10==A[rear_2][1]||A[rear_1][1]+20<A[rear_2][1])
y=A[rear_1][1]+10;
if(A[rear_1][1]+10==A[rear_2][1]||A[rear_1][1]-20>A[rear_2][1])
y=A[rear_1][1]-10;
x=A[rear_1][0];
if(y>200||y<0) y=abs(abs(y)-200);}
if(A[rear_1][1]==A[rear_2][1]){
if(A[rear_1][0]-10==A[rear_2][0]||A[rear_1][0]+20<A[rear_2][0])
x=A[rear_1][0]+10;
if(A[rear_1][0]+10==A[rear_2][0]||A[rear_1][0]-20>A[rear_2][0])
x=A[rear_1][0]-10;
y=A[rear_1][1];
if(x>200||x<0) x=abs(abs(x)-200);}
if(B[(x-5)/10][(y-5)/10]==0 )
{ B[(x-5)/10][(y-5)/10]=1;
B[(front-5)/10][(front-5)/10]=0 ;
rear_2=rear_1;rear_1=(rear_1+1)%20;
A[rear_1][0]=x;A[rear_1][1]=y;rectangle(x-5,y-5,x+5,y+5);
rectangle(A[front][0]-5,A[front][1]-5,A[front][0]+5,A[front][1]+5);
delay(100000);
front=(front+1)%20;}
if(B[(x-5)/10][(y-5)/10]==2 )
{ B[(x-5)/10][(y-5)/10]=1 ;
rear_2=rear_1;rear_1=(rear_1+1)%20;
A[rear_1][0]=x;A[rear_1][1]=y;delay(100000);
do{j=rand()%20;k=rand()%20;}while(B[j][k]!=0);
B[j][k]=2; rectangle(10*j,10*k,10*j+10,10*k+10);}
}
i=getch();b=0;
if((i=='w'||i=='s')&&(A[rear_1][1]==A[rear_2][1])){x=A[rear_1][0];
if(i=='w') y=A[rear_1][1]-10;
if(i=='s') y=A[rear_1][1]+10;
if(y>200||y<0)y=abs(abs(y)-200);}
if((i=='w'||i=='s')&&(A[rear_1][0]==A[rear_2][0])){
if((A[rear_1][1]-10==A[rear_2][1]||A[rear_1][1]+20<A[rear_2][1])&&i=='s')
{b=1 ;y=A[rear_1][1]+10; }
if((A[rear_1][1]-10==A[rear_2][1]||A[rear_1][1]+20<A[rear_2][1])&&i=='w')
{b=0;y=A[rear_1][1]+10;}
if((A[rear_1][1]+10==A[rear_2][1]||A[rear_1][1]-20>A[rear_2][1])&&i=='w')
{b=1; y=A[rear_1][1]-10;}
if((A[rear_1][1]+10==A[rear_2][1]||A[rear_1][1]-20>A[rear_2][1])&&i=='s')
{b=0;y=A[rear_1][1]-10;}
x=A[rear_1][0];
if(y>200||y<0) y=abs(abs(y)-200);}
if((i=='a'||i=='d')&&(A[rear_1][0]==A[rear_2][0])){y=A[rear_1][1];
if(i=='a')x=A[rear_1][0]-10;
if(i=='d') x=A[rear_1][0]+10;
if(x>200||x<0)x=abs(abs(x)-200);}
if((i=='a'||i=='d')&&(A[rear_1][1]==A[rear_2][1])){
if((A[rear_1][0]-10==A[rear_2][0]||A[rear_1][0]+20<A[rear_2][0])&&i=='d')
{ b=1;x=A[rear_1][0]+10;}
if((A[rear_1][0]-10==A[rear_2][0]||A[rear_1][0]+20<A[rear_2][0])&&i=='a')
{ b=0;x=A[rear_1][0]+10;}
if((A[rear_1][0]+10==A[rear_2][0]||A[rear_1][0]-20>A[rear_2][0])&&i=='a')
{b=1; x=A[rear_1][0]-10;}
if((A[rear_1][0]+10==A[rear_2][0]||A[rear_1][0]-20>A[rear_2][0])&&i=='d')
{ b=0 ; x=A[rear_1][0]-10;}
y=A[rear_1][1];
if(x>200||x<0) x=abs(abs(x)-200);}
if(B[(x-5)/10][(y-5)/10]==0 )
{ B[(x-5)/10][(y-5)/10]=1;
B[(front-5)/10][(front-5)/10]=0 ;
rear_2=rear_1;rear_1=(rear_1+1)%20;
A[rear_1][0]=x;A[rear_1][1]=y;rectangle(x-5,y-5,x+5,y+5);
rectangle(A[front][0]-5,A[front][1]-5,A[front][0]+5,A[front][1]+5);
delay(100000);
front=(front+1)%20;}
if(B[(x-5)/10][(y-5)/10]==2 )
{ B[(x-5)/10][(y-5)/10]=1 ;
rear_2=rear_1;rear_1=(rear_1+1)%20;
A[rear_1][0]=x;A[rear_1][1]=y;delay(100000);
do{j=rand()%20;k=rand()%20;}while(B[j][k]!=0);
B[j][k]=2;rectangle(10*j,10*k,10*j+10,10*k+10);}
if(b==1)delay(10000);else delay(100000);b=0;
}}