用c语言写一个贪吃蛇游戏代码并运行
时间: 2024-01-28 10:05:53 浏览: 81
贪吃蛇c语言程序代码-经典C语言实现命令行贪吃蛇游戏
以下是一个简单的贪吃蛇游戏的C语言代码,可以在Windows平台上运行:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 40 // 游戏区域宽度
#define HEIGHT 20 // 游戏区域高度
int snakeX[100], snakeY[100]; // 蛇的坐标数组
int snakeLen = 3; // 蛇的长度
int foodX, foodY; // 食物的坐标
int score = 0; // 得分
// 初始化游戏
void init()
{
// 初始化蛇的位置
snakeX[0] = WIDTH / 2;
snakeY[0] = HEIGHT / 2;
snakeX[1] = snakeX[0] - 1;
snakeY[1] = snakeY[0];
snakeX[2] = snakeX[1] - 1;
snakeY[2] = snakeY[1];
// 随机生成食物的位置
srand((unsigned)time(NULL));
foodX = rand() % (WIDTH - 2) + 1;
foodY = rand() % (HEIGHT - 2) + 1;
}
// 绘制游戏区域
void draw()
{
system("cls"); // 清屏
// 绘制上边框
for (int i = 0; i < WIDTH; i++) {
printf("#");
}
printf("\n");
// 绘制中间区域
for (int i = 0; i < HEIGHT - 2; i++) {
printf("#");
for (int j = 0; j < WIDTH - 2; j++) {
if (i == foodY - 1 && j == foodX - 1) { // 绘制食物
printf("O");
} else {
int flag = 0;
for (int k = 0; k < snakeLen; k++) { // 绘制蛇
if (snakeX[k] == j && snakeY[k] == i + 1) {
printf("*");
flag = 1;
break;
}
}
if (!flag) {
printf(" ");
}
}
}
printf("#\n");
}
// 绘制下边框
for (int i = 0; i < WIDTH; i++) {
printf("#");
}
printf("\n");
// 显示得分
printf("Score: %d\n", score);
}
// 更新蛇的位置
void update()
{
// 获取键盘输入
int key = 0;
if (_kbhit()) {
key = _getch();
}
// 根据键盘输入更新蛇的方向
int dx = 0, dy = 0;
switch (key) {
case 'w':
dy = -1;
break;
case 's':
dy = 1;
break;
case 'a':
dx = -1;
break;
case 'd':
dx = 1;
break;
}
// 更新蛇的位置
int newX = snakeX[0] + dx;
int newY = snakeY[0] + dy;
if (newX < 0) newX += WIDTH - 2;
if (newX >= WIDTH - 2) newX -= WIDTH - 2;
if (newY < 0) newY += HEIGHT - 2;
if (newY >= HEIGHT - 2) newY -= HEIGHT - 2;
for (int i = snakeLen - 1; i > 0; i--) {
snakeX[i] = snakeX[i - 1];
snakeY[i] = snakeY[i - 1];
}
snakeX[0] = newX;
snakeY[0] = newY;
// 判断是否吃到食物
if (newX == foodX - 1 && newY == foodY - 1) {
snakeLen++;
score++;
foodX = rand() % (WIDTH - 2) + 1;
foodY = rand() % (HEIGHT - 2) + 1;
}
// 判断游戏是否结束
for (int i = 1; i < snakeLen; i++) {
if (snakeX[0] == snakeX[i] && snakeY[0] == snakeY[i]) {
printf("Game over!\n");
exit(0);
}
}
}
int main()
{
init(); // 初始化游戏
while (1) {
draw(); // 绘制游戏区域
update(); // 更新蛇的位置
Sleep(100); // 等待一段时间,控制游戏速度
}
return 0;
}
```
可以使用Visual Studio等集成开发环境,或者使用gcc等编译器编译运行。
阅读全文