c语言设计贪吃蛇简易版程序
时间: 2024-03-11 21:47:19 浏览: 60
贪吃蛇简易C语言程序设计
好的,我可以为您提供一个简单的贪吃蛇游戏的 C 语言程序,以下是代码:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
// 定义常量
#define ROW 20
#define COL 20
// 定义全局变量
int score = 0; // 得分
int snakeLen = 3; // 贪吃蛇长度
int speed = 150; // 游戏速度,单位毫秒
int dir = 1; // 贪吃蛇初始方向,1表示右,2表示下,3表示左,4表示上
// 定义结构体
typedef struct {
int x;
int y;
} Point;
// 定义全局变量
Point food; // 食物位置
Point snake[400]; // 贪吃蛇身体
int map[ROW][COL]; // 地图
// 函数声明
void InitMap(); // 初始化地图
void PrintMap(); // 打印地图
void InitSnake(); // 初始化贪吃蛇
void CreateFood(); // 创建食物
void Move(); // 移动贪吃蛇
void GameOver(); // 游戏结束
// 初始化地图
void InitMap() {
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] = 1;
} else {
map[i][j] = 0;
}
}
}
}
// 打印地图
void PrintMap() {
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (map[i][j] == 0) {
printf(" ");
} else if (map[i][j] == 1) {
printf("#");
} else if (map[i][j] == 2) {
printf("*");
} else {
printf("S");
}
}
printf("\n");
}
}
// 初始化贪吃蛇
void InitSnake() {
int i;
// 初始位置
snake[0].x = ROW / 2;
snake[0].y = COL / 2;
map[snake[0].x][snake[0].y] = 3;
// 生成身体
for (i = 1; i < snakeLen; i++) {
snake[i].x = snake[i - 1].x;
snake[i].y = snake[i - 1].y - 1;
map[snake[i].x][snake[i].y] = 3;
}
}
// 创建食物
void CreateFood() {
srand((unsigned)time(NULL));
int x, y;
do {
x = rand() % (ROW - 2) + 1;
y = rand() % (COL - 2) + 1;
} while (map[x][y] != 0);
food.x = x;
food.y = y;
map[food.x][food.y] = 2;
}
// 移动贪吃蛇
void Move() {
int i;
Point tail = snake[snakeLen - 1]; // 获取尾巴位置
// 清空蛇身
for (i = snakeLen - 1; i > 0; i--) {
snake[i] = snake[i - 1];
}
// 移动蛇头
if (dir == 1) {
snake[0].y++;
} else if (dir == 2) {
snake[0].x++;
} else if (dir == 3) {
snake[0].y--;
} else {
snake[0].x--;
}
// 判断是否吃到食物
if (snake[0].x == food.x && snake[0].y == food.y) {
snake[snakeLen] = tail; // 添加尾巴
snakeLen++; // 蛇身变长
score++; // 得分增加
CreateFood(); // 生成新的食物
speed -= 5; // 加速
}
// 判断游戏是否结束
if (snake[0].x == 0 || snake[0].x == ROW - 1 || snake[0].y == 0 || snake[0].y == COL - 1) {
GameOver();
}
for (i = 1; i < snakeLen; i++) {
if (snake[0].x == snake[i].x && snake[0].y == snake[i].y) {
GameOver();
}
}
// 显示贪吃蛇及得分
system("cls");
printf("score: %d\n", score);
PrintMap();
// 延时
Sleep(speed);
}
// 游戏结束
void GameOver() {
printf("Game Over!\n");
printf("Your score is: %d\n", score);
exit(0);
}
int main() {
InitMap(); // 初始化地图
InitSnake(); // 初始化贪吃蛇
CreateFood(); // 创建食物
PrintMap(); // 打印地图
// 游戏循环
while (1) {
if (_kbhit()) { // 判断是否有按键按下
int key = _getch(); // 获取按键
if (key == 224) { // 判断方向键
key = _getch();
if (key == 72 && dir != 2) { // 上
dir = 4;
} else if (key == 80 && dir != 4) { // 下
dir = 2;
} else if (key == 75 && dir != 1) { // 左
dir = 3;
} else if (key == 77 && dir != 3) { // 右
dir = 1;
}
} else if (key == 27) { // 按下 ESC 键退出游戏
exit(0);
}
}
Move(); // 移动贪吃蛇
}
return 0;
}
```
希望这个程序能够帮助到您!
阅读全文