共有回帖数 0 个
- 打了一清晨的贪吃蛇代码,已经知道哪错了,但是不知道怎么改正?
-
只看楼主
收藏
回复
-
#include graphics.h //显示第一行错了
#include stdlib.h
#include dos.h
#include conio.h
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define N 100
int i,key,speed;
void GameOver();
void Play();
void dwall();
void wall(int x,int y);
int Speed();
struct FOOD
{
int x;
int y;
int flag;
}food;
struct Snake
{
int x[N];
int y[N];
int node;
int dir;
int life;
}snake;
void wall(int x,int y)
{
int sizx=9;
int sizy=9;
setcolor(15);
line(x,y,x+sizx,y);
line(x,y+1,x=sizx-1,y+1);
line(x,y,x,y+sizy);
line(x+1,y,x+1,y+sizy-1);
setcolor(4);
line(x+1,y+sizy,x+sizx,y+sizy);
line(x+2,y+sizy-1,x+sizx,y+sizy-1);
line(x+sizx,y+2,x+sizx-1,y+sizy-1);
line(x+sizx,y+1,x+sizx,y+sizy);
setfillstyle(1,12);
bar(x+2,y+2,x+sizx-2,y+sizy-2);
}
void dwall()
{
int j;
for(j=50;j=600;j+=10)
{
wall(j,40);
wall(j,451);
}
for (j=40;j=450;j+=10)
{
wall(50,j);
wall(601,j);
}
}
int Speed()
{
int m;
gotoxy(20,10);
printf("level1n");
gotoxy(20,12);
printf("level2n");
gotoxy(20,14);
printf("level3nttplease choose:");
scanf("%d,&m");
switch(m)
{
case 1:
return 60000;
case 2:
return 40000;
case 3:
return 20000;
default:
cleardevice();
Speed;
}
}
void Play(void)
{
srand((unsigned long)time(0));
food.flag=1;
snake.life=0;
snake.dir=1;
snake.x[0]=300;
snake.y[0]=240;
snake.x[1]=290;
snake.y[1]=240;
snake.node=2;
do
{
while (!kbhit())
{
if (food.flag==1)
do
{
food.x=rand()%520+60;
food.y=rand()%370+60;
food.flag==0;
}
while(food.x%10!=0||food.y%10!=0);
if (food.flag==0)
{
setcolor(GREEN); //这里的GREEN
setlinestyle(3,0,3);
rectangle(food.x,food.y,food.x+10,food.y+10);
}
for(i=snake.node-1;i0;i--)
{
snake.x=snake.x[i-1];
snake.y=snake.y[i-1];
}
switch(snake.dir)
{
case 1:
snake.x[0]+=10;
case 2:
snake.x[0]-=10;
case 3:
snake.y[0]-=10;
case 4:
snake.y[0]+=10;
break;
}
for(i=3;isnake.node;i++)
{
if(snake.x==snake.x[0]&&snake.y==snake.y[0])
{
GameOver();
snake.life=1;
break;
}
}
if(snake.x[0]60||snake.x[0]590||snake.y[0]50||snake.y[0]440)
{
GameOver();
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.node++;
food.flag=1;
}
setcolor(4);
for(i=0;isnake.node;i++)
{
setlinestyle(0,0,1);
rectangle(snake.x,snake.y,snake.x+10,snake.y+10);
}
delay(speed);
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==UP&&snake.dir!=4)
snake.dir=3;
else
if(key==DOWN&&snake.dir!=3)
snake.dir=4;
else
if(RIGHT&&snake.dir!=2)
snake.dir=1;
else
if(key==LEFT&&snake.dir!=1)
snake.dir=2;
}
while(key!=ESC);
}
void GameOver(void)
{
cleardevice();
setcolor(RED); // 还有这里的RED
settexstyle(0,0,4);
outtextxy(50,200,"GAME OVER,BYE BYE!");
sleep(3);
}
//最后一段main也有错误
main()
{
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
speed=Speed();
cleardevice();
dwall();
Play();
getch();
closegraph();
}
楼主 2015-10-10 13:47 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知