用C语言设计贪吃蛇游戏
时间: 2023-05-23 19:01:48 浏览: 99
感谢您的提问,下面是一个用C语言设计的贪吃蛇游戏的代码示例:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "windows.h"
#include "time.h"
#define WIDE 60 //窗口宽度
#define HIGH 30 //窗口高度
#define SIZE 100 //蛇的最大长度
int snake[SIZE][2]; //蛇的位置数组
int len; //蛇的长度
int food[2]; //食物的位置数组
char direction = 'd'; //蛇的运动方向
int score; //得分
void draw(); //绘制地图函数
void init(); //初始化函数
void createFood(); //随机生成食物
int main()
{
init(); //初始化游戏
while(1)
{
draw(); //绘制游戏画面
Sleep(200); //控制蛇的速度
//控制蛇的移动
for(int i = len - 1; i > 0; i--)
{
snake[i][0] = snake[i-1][0];
snake[i][1] = snake[i-1][1];
}
//控制蛇头的移动
switch(direction)
{
case 'a': snake[0][1]--; break;
case 'd': snake[0][1]++; break;
case 'w': snake[0][0]--; break;
case 's': snake[0][0]++; break;
}
//判断蛇是否吃到了食物
if(snake[0][0] == food[0] && snake[0][1] == food[1])
{
len++; //增加蛇的长度
score++; //增加得分
createFood(); //生成新的食物
}
//判断蛇是否死亡
if(snake[0][0] < 0 || snake[0][0] >= HIGH || snake[0][1] < 0 || snake[0][1] >= WIDE)
break;
for(int i = 1; i < len; i++)
if(snake[i][0] == snake[0][0] && snake[i][1] == snake[0][1])
break;
//检测是否按下了方向键
if(kbhit())
{
char c = getch();
if(c == 'a' || c == 'd' || c == 'w' || c == 's')
direction = c;
}
}
//游戏结束,输出得分
system("cls");
printf("Game over!\nYour score is %d.\n", score);
return 0;
}
void draw()
{
//清空屏幕
system("cls");
//绘制地图
for(int i = 0; i <= HIGH; i++)
{
for(int j = 0; j <= WIDE; j++)
{
if(i == 0 || i == HIGH || j == 0 || j == WIDE)
printf("#");
else if(i == snake[0][0] && j == snake[0][1])
printf("@");
else if(i == food[0] && j == food[1])
printf("*");
else
{
int flag = 0;
for(int k = 1; k < len; k++)
{
if(i == snake[k][0] && j == snake[k][1])
{
flag = 1;
printf("o");
}
}
if(!flag)
printf(" ");
}
}
printf("\n");
}
printf("Score: %d\n", score); //输出得分
}
void init()
{
//设置随机数种子
srand(time(NULL));
//初始化蛇
snake[0][0] = HIGH/2;
snake[0][1] = WIDE/2;
len = 5;
for(int i = 1; i < len; i++)
{
snake[i][0] = snake[i-1][0] - 1;
snake[i][1] = snake[i-1][1];
}
//生成食物
createFood();
}
void createFood()
{
while(1)
{
int flag = 0;
//随机生成食物的位置
food[0] = rand() % (HIGH - 2) + 1;
food[1] = rand() % (WIDE - 2) + 1;
//判断食物是否与蛇的位置冲突
for(int i = 0; i < len; i++)
if(food[0] == snake[i][0] && food[1] == snake[i][1])
{
flag = 1;
break;
}
if(!flag)
break;
}
}
阅读全文