贪吃蛇的问题 有错误郁闷啊
#define N 200#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#include"graphics.h"
#include"stdio.h"
#include"dos.h"
#include"stdlib.h"
int i;int key;
int GameSpeed = 200;
int score = 0;
struct food
{
int x;
int y;
int yes;
}food;
struct Snake
{
int x[N];
int y[N];
int node;
int life;
int direction;
}snake;
void Init(void);
void TuXJM(void);
void GMRUN(void);
void Score(void);
void GMOVER(void);
void Close(void);
void main()
{
void Init(void);
void TUXJM(void);
void GMRUN(void);
void Close(void);
}
void Init(void)
{
int gd,gm;
gd = DETECT;
initgraph(&gd,&gm,"E:\tc");
cleardevice();
}
void TuXJM(void)
{
setbkcolor(15);
setcolor(8);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i = 50;i<=600;i+=10)
{
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10);
rectangle(601,i,610,10);
}
}
void GMRUN(void)
{
randomize();
snake.life = 0;
snake.x[0] = 100; snake.y[0] = 100;
snake.x[1] = 110; snake.y[1] = 100;
snake.node = 2;
snake.direction = 1;
food.yes = 1;
Score();
while(1)
{
while(!kbhit())
{
if(food.yes ==1)
{
food.x = rand()%400+60;
food.y = rand()%350+60;
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++;
food.yes = 0;
}
if(food.yes ==0)
{
setcolor(2);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i = snake.node-1;i>0;i--)
{
snake.x[i] = snake.x[i-1];
snake.y[i] = snake.y[i-1];
}
switch(snake.direction)
{
case 1: snake.x[0] += 10; break;
case 2: snake.x[0] -= 10; break;
case 3: snake.y[0] += 10; break;
case 4: snake.y[0] -= 10; break;
}
for(i = 3;i<snake.node;i++)
{
if(snake.x[i] == snake.x[0]&&snake.y[i] ==snake.y[0])
{
GMOVER();
snake.life = 1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
GMOVER();
snake.life = 1;
}
if(snake.life ==1)
{
break;
}
if(snake.x[0] ==food.x && snake.y[0] ==food.y)
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node] = -20;
snake.y[snake.node] = -20;
snake.node++;
food.yes = 1;
score +=10;
Score();
}
setcolor(1);
for(i = 0;i<snake.node;i++)
{
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(GameSpeed);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
}
if(snake.life == 1)
{
break;
}
key = bioskey(0);
if(key == ESC)
{
break;
}
else if(key == UP&& snake.direction !=4)
{
snake.direction = 3;
}
else if(key == DOWN && snake.direction !=3)
{
snake.direction = 4;
}
else if(key == RIGHT && snake.direction != 2)
{
snake.direction = 1;
}
else if(key == LEFT&& snake.direction != 1)
{
snake.direction =2;
}
}
}
void GMOVER(void)
{
cleardevice();
Score();
setcolor(2);
settextstyle(0,0,6);
outtextxy(200,200,"GAME OVER");
getch();
}
void Score(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,200,35);
setcolor(6);
settextstyle(0,0,4);
sprintf(str,"score:%d",score);
outtextxy(50,20,str);
}
void Close(void)
{
getch();
closegraph();
}
}
用的是turboc 编的 提示 在GMRUN有语义有问题 不知道哪里有问题 是逻辑错误了吗?