写一个贪吃蛇代码C语言
时间: 2023-12-29 19:02:22 浏览: 34
#include <stdio.h>
int main()
{
int width=20; //设置贪吃蛇的宽度
int height=20; //设置贪吃蛇的高度
int x,y; //定义贪吃蛇的位置
int foodx,foody; //定义食物的位置
int score=0; //定义分数
int length=3; //定义贪吃蛇的长度
int direction=0; //定义贪吃蛇的移动方向
int gameover=0; //定义游戏结束状态
int tailx[100],taily[100]; //定义贪吃蛇的尾部
int count=0; //定义贪吃蛇尾部的长度
int speed=100; //定义贪吃蛇的速度
//游戏开始
while(!gameover)
{
//绘制贪吃蛇
for(x=0;x<width;x++)
{
for(y=0;y<height;y++)
{
if(x==0||y==0||x==width-1||y==height-1)
{
printf("#");
}
else
{
int check=0;
if(x==x&&y==y)
{
printf("O");
check=1;
}
if(check==0)
{
int c;
for(c=0;c<count;c++)
{
if(x==tailx[c]&&y==taily[c])
{
printf("o");
check=1;
}
}
}
if(check==0)
{
printf(" ");
}
}
}
printf("\n");
}
//控制贪吃蛇的移动
if(kbhit())
{
char current=getch();
if(current=='a'&&direction!=2)
{
direction=0;
}
else if(current=='w'&&direction!=3)
{
direction=1;
}
else if(current=='d'&&direction!=0)
{
direction=2;
}
else if(current=='s'&&direction!=1)
{
direction=3;
}
}
Sleep(speed);
//更新贪吃蛇的位置
int prevx=tailx[0];
int prevy=taily[0];
int prev2x,prev2y;
tailx[0]=x;
taily[0]=y;
int i;
for(i=1;i<count;i++)
{
prev2x=tailx[i];
prev2y=taily[i];
tailx[i]=prevx;
taily[i]=prevy;
prevx=prev2x;
prevy=prev2y;
}
switch(direction)
{
case 0:
x--;
break;
case 1:
y--;
break;
case 2:
x++;
break;
case 3:
y++;
break;
default:
break;
}
//检查贪吃蛇是否吃到食物
if(x==foodx&&y==foody)
{
score+=10;
foodx=rand()%width;
foody=rand()%height;
length++;
tailx[length-1]=prevx;
taily[length-1]=prevy;
count++;
}
//检查贪吃蛇是否撞到边界
if(x<=0||x>=width||y<=0||y>=height)
{
gameover=1;
}
//检查贪吃蛇是否撞到自己
int c;
for(c=0;c<count;c++)
{
if(x==tailx[c]&&y==taily[c])
{
gameover=1;
}
}
//显示分数
printf("score: %d\n",score);
}
printf("Game Over!\n");
return 0;
}
阅读全文