用C语言写一个贪吃蛇的代码
时间: 2023-03-31 15:04:49 浏览: 82
用c语言编写贪吃蛇程序
5星 · 资源好评率100%
很高兴回答你的问题。以下是一个简单的贪吃蛇游戏的 C 语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define ROW 20
#define COL 30
int snake[ROW*COL][2]; // 蛇的坐标
int food[2]; // 食物的坐标
int len; // 蛇的长度
int score; // 得分
int speed; // 速度
int direction; // 方向
int map[ROW][COL]; // 地图
void init(); // 初始化
void draw(); // 绘制
void update(); // 更新
void input(); // 输入
void gameover(); // 游戏结束
int main()
{
init();
while (1)
{
draw();
input();
update();
Sleep(speed);
}
return ;
}
void init()
{
srand((unsigned)time(NULL)); // 随机数种子
len = 3; // 初始长度为3
score = ; // 初始得分为
speed = 200; // 初始速度为200毫秒
direction = 'd'; // 初始方向为向右
for (int i = ; i < ROW; i++)
{
for (int j = ; j < COL; j++)
{
if (i == || i == ROW - 1 || j == || j == COL - 1)
{
map[i][j] = 1; // 地图边缘为1
}
else
{
map[i][j] = ; // 地图内部为
}
}
}
for (int i = ; i < len; i++)
{
snake[i][] = 1;
snake[i][1] = len - i;
map[snake[i][]][snake[i][1]] = 2; // 蛇的初始位置为2
}
food[] = rand() % (ROW - 2) + 1;
food[1] = rand() % (COL - 2) + 1;
map[food[]][food[1]] = 3; // 食物的初始位置为3
}
void draw()
{
system("cls"); // 清屏
printf("Score: %d\n", score);
for (int i = ; i < ROW; i++)
{
for (int j = ; j < COL; j++)
{
if (map[i][j] == )
{
printf(" ");
}
else if (map[i][j] == 1)
{
printf("#");
}
else if (map[i][j] == 2)
{
printf("*");
}
else if (map[i][j] == 3)
{
printf("o");
}
}
printf("\n");
}
}
void update()
{
int head[2] = { snake[][], snake[][1] };
if (direction == 'w')
{
head[]--;
}
else if (direction == 's')
{
head[]++;
}
else if (direction == 'a')
{
head[1]--;
}
else if (direction == 'd')
{
head[1]++;
}
if (head[] == food[] && head[1] == food[1])
{
len++;
score += 10;
speed -= 10;
food[] = rand() % (ROW - 2) + 1;
food[1] = rand() % (COL - 2) + 1;
map[food[]][food[1]] = 3;
}
else
{
map[snake[len - 1][]][snake[len - 1][1]] = ;
}
for (int i = len - 1; i > ; i--)
{
snake[i][] = snake[i - 1][];
snake[i][1] = snake[i - 1][1];
}
snake[][] = head[];
snake[][1] = head[1];
if (map[head[]][head[1]] == 1 || map[head[]][head[1]] == 2)
{
gameover();
}
map[head[]][head[1]] = 2;
}
void input()
{
if (_kbhit())
{
char ch = _getch();
if ((ch == 'w' || ch == 's' || ch == 'a' || ch == 'd') && abs(ch - direction) != 2)
{
direction = ch;
}
}
}
void gameover()
{
system("cls");
printf("Game Over!\n");
printf("Your Score: %d\n", score);
exit();
}
阅读全文