c语言贪吃蛇游戏代码
时间: 2023-08-12 10:20:08 浏览: 57
c语言贪吃蛇游戏的代码
5星 · 资源好评率100%
以下是一个简单的 C 语言贪吃蛇游戏代码示例:
```
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define ROW 20
#define COL 40
int score = 0; // 记录得分
int speed = 200; // 初始速度
char map[ROW][COL]; // 地图
int snake[ROW * COL][2]; // 蛇身,第一列为行,第二列为列
int len = 1; // 蛇身长度
int dir = 0; // 初始方向:向右
// 初始化地图
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] = '#'; // 边界
} else {
map[i][j] = ' '; // 空白区域
}
}
}
}
// 初始化蛇
void initSnake()
{
snake[0][0] = ROW / 2;
snake[0][1] = COL / 2;
map[snake[0][0]][snake[0][1]] = '*'; // 蛇头
}
// 生成食物
void genFood()
{
srand((unsigned)time(NULL)); // 随机数种子
int x, y;
do {
x = rand() % (ROW - 2) + 1;
y = rand() % (COL - 2) + 1;
} while (map[x][y] != ' ');
map[x][y] = '$'; // 食物
}
// 显示地图
void display()
{
system("cls"); // 清屏
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
printf("得分:%d\n", score);
}
// 判断是否撞墙或撞自己
int isOver()
{
if (map[snake[0][0]][snake[0][1]] == '#' || map[snake[0][0]][snake[0][1]] == '*') {
return 1;
}
int i;
for (i = 1; i < len; i++) {
if (snake[i][0] == snake[0][0] && snake[i][1] == snake[0][1]) {
return 1;
}
}
return 0;
}
// 移动蛇
void move()
{
int i;
for (i = len - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
switch (dir) {
case 0: snake[0][1]++; break; // 右
case 1: snake[0][0]--; break; // 上
case 2: snake[0][1]--; break; // 左
case 3: snake[0][0]++; break; // 下
}
if (map[snake[0][0]][snake[0][1]] == '$') { // 吃到食物
score += 10;
len++;
genFood();
if (speed > 50) { // 加速
speed -= 10;
}
}
map[snake[1][0]][snake[1][1]] = ' '; // 清除蛇尾
map[snake[0][0]][snake[0][1]] = '*'; // 更新蛇头
}
// 监听方向键
void listenKey()
{
if (_kbhit()) { // 有键盘输入
char ch = _getch();
switch (ch) {
case 'a': dir = 2; break; // 左
case 'w': dir = 1; break; // 上
case 'd': dir = 0; break; // 右
case 's': dir = 3; break; // 下
}
}
}
int main()
{
initMap();
initSnake();
genFood();
display();
while (1) {
listenKey();
move();
display();
if (isOver()) {
printf("游戏结束!得分:%d\n", score);
break;
}
Sleep(speed); // 延时
}
return 0;
}
```
这只是一个简单的示例,可能有一些不足之处,可以根据自己的实际需求进行修改和完善。
阅读全文