贪吃蛇c语言程序代码
时间: 2023-06-21 07:15:01 浏览: 56
下面是一个简单的贪吃蛇C语言程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
#define ROW 20
#define COL 40
int snake[ROW * COL][2]; // 存储蛇每个节点的行列坐标
int food[2]; // 存储食物的行列坐标
int score = 0; // 存储得分
int length = 3; // 蛇的初始长度
void init(); // 初始化游戏
void draw(); // 绘制游戏界面
void create_food(); // 随机产生食物
void move(); // 蛇的移动和碰撞检测
void gameover(); // 游戏结束
int main()
{
init(); // 初始化游戏
while (1) {
draw(); // 绘制游戏界面
move(); // 蛇的移动和碰撞检测
Sleep(100); // 暂停一段时间,控制游戏速度
}
return 0;
}
void init()
{
srand(time(NULL)); // 设置随机数种子
snake[0][0] = ROW / 2; // 设置蛇头的初始位置
snake[0][1] = COL / 2;
create_food(); // 随机产生食物
}
void draw()
{
system("cls"); // 清屏
printf("Score: %d\n\n", score);
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
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 < length; k++) {
if (i == snake[k][0] && j == snake[k][1]) {
printf("#"); // 绘制蛇身
flag = 1;
break;
}
}
if (!flag) {
printf(" ");
}
}
}
printf("\n");
}
}
void create_food()
{
int x, y;
do {
x = rand() % ROW;
y = rand() % COL;
} while (x == snake[0][0] && y == snake[0][1]); // 食物不能在蛇头上
food[0] = x;
food[1] = y;
}
void move()
{
int dir = 0;
if (_kbhit()) { // 检测键盘输入
dir = _getch();
}
int x = snake[0][0];
int y = snake[0][1];
switch (dir) {
case 'w': // 上
x--;
break;
case 's': // 下
x++;
break;
case 'a': // 左
y--;
break;
case 'd': // 右
y++;
break;
}
if (x < 0 || x >= ROW || y < 0 || y >= COL) {
gameover(); // 碰到边缘,游戏结束
}
for (int i = 1; i < length; i++) {
if (x == snake[i][0] && y == snake[i][1]) {
gameover(); // 碰到蛇身,游戏结束
}
}
if (x == food[0] && y == food[1]) {
score++; // 吃到食物,得分加一
length++; // 蛇的长度加一
create_food(); // 随机产生新的食物
}
for (int i = length - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
snake[0][0] = x;
snake[0][1] = y;
}
void gameover()
{
system("cls");
printf("Game Over!\n");
printf("Your Score: %d\n", score);
exit(0); // 退出程序
}
```
这个程序使用了Windows API中的`Sleep()`函数来控制游戏速度,因此只能在Windows操作系统上运行。如果你想在其他操作系统上运行,可以使用类似`usleep()`的函数代替`Sleep()`函数。同时,这个程序没有使用图形界面,只是简单地在控制台中输出字符,因此界面比较简陋。如果你想让界面更加美观,可以考虑使用图形界面库,比如OpenGL或者SDL等。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)