简略的贪吃蛇c语言代码
时间: 2023-10-16 14:09:36 浏览: 93
贪吃蛇c语言代码
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ROW 20 //定义行数
#define COL 20 //定义列数
#define FOOD_NUM 10 //定义食物数量
int headx,heady; //蛇头坐标
int foodx[FOOD_NUM],foody[FOOD_NUM]; //食物坐标
int snakex[ROW*COL],snakey[ROW*COL]; //蛇身坐标
int snake_len=3; //蛇身长度
char map[ROW][COL]; //地图数组
void init_map(); //初始化地图
void init_snake(); //初始化蛇
void init_food(); //初始化食物
void draw_map(); //绘制地图
void draw_snake(); //绘制蛇
void draw_food(); //绘制食物
void move_snake(); //移动蛇
void create_food(); //生成食物
void game_over(); //游戏结束
int main()
{
init_map();
init_snake();
init_food();
draw_map();
draw_snake();
draw_food();
while(1)
{
move_snake();
draw_map();
draw_snake();
draw_food();
Sleep(100); //延时100毫秒
}
return 0;
}
void init_map()
{
int i,j;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
if(i==0 || i==ROW-1 || j==0 || j==COL-1)
{
map[i][j]='#'; //边界
}
else
{
map[i][j]=' '; //空格
}
}
}
}
void init_snake()
{
int i;
headx=ROW/2;
heady=COL/2;
snakex[0]=headx;
snakey[0]=heady+2;
snakex[1]=headx;
snakey[1]=heady+1;
snakex[2]=headx;
snakey[2]=heady;
}
void init_food()
{
int i;
for(i=0;i<FOOD_NUM;i++)
{
create_food();
}
}
void draw_map()
{
int i,j;
system("cls"); //清屏
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
printf("%c",map[i][j]);
}
printf("\n");
}
}
void draw_snake()
{
int i;
for(i=0;i<snake_len;i++)
{
map[snakex[i]][snakey[i]]='*';
}
map[snakex[0]][snakey[0]]='@'; //蛇头
}
void draw_food()
{
int i;
for(i=0;i<FOOD_NUM;i++)
{
map[foodx[i]][foody[i]]='o';
}
}
void move_snake()
{
int i;
if(kbhit()) //如果有按键
{
char key=getch(); //获取按键
switch(key)
{
case 'w': //上
{
snakex[0]--;
break;
}
case 's': //下
{
snakex[0]++;
break;
}
case 'a': //左
{
snakey[0]--;
break;
}
case 'd': //右
{
snakey[0]++;
break;
}
}
}
//判断是否吃到食物
for(i=0;i<FOOD_NUM;i++)
{
if(snakex[0]==foodx[i] && snakey[0]==foody[i])
{
snake_len++;
create_food();
}
}
//判断是否撞墙或撞到自己
if(snakex[0]==0 || snakex[0]==ROW-1 || snakey[0]==0 || snakey[0]==COL-1)
{
game_over();
}
for(i=1;i<snake_len;i++)
{
if(snakex[0]==snakex[i] && snakey[0]==snakey[i])
{
game_over();
}
}
//移动蛇身
for(i=snake_len-1;i>0;i--)
{
snakex[i]=snakex[i-1];
snakey[i]=snakey[i-1];
}
}
void create_food()
{
int i,x,y;
do
{
x=rand()%ROW;
y=rand()%COL;
}
while(map[x][y]!=' ');
foodx[i]=x;
foody[i]=y;
}
void game_over()
{
printf("Game Over!\n");
exit(0); //退出游戏
}
阅读全文