写一段C语言的贪吃蛇的代码
时间: 2024-10-09 17:02:57 浏览: 30
C语言贪吃蛇大作战源代码,C语言期末作业
5星 · 资源好评率100%
贪吃蛇是一个经典的电子游戏,使用C语言编写需要一些基本的游戏逻辑和图形界面的知识。下面是一个非常基础的C语言版贪吃蛇游戏的简单框架,它仅处理蛇的移动和边界检测:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define ROWS 20
#define COLS 40
#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3
#define SNAKE_HEAD 1
#define SNAKE_BODY 2
int grid[ROWS][COLS] = {0};
int snake[50][2] = {{ROWS / 2, COLS / 2}, {ROWS / 2 - 1, COLS / 2}, ...}; // 初始化蛇的身体
int direction = RIGHT; // 起始方向为右
void moveSnake();
void drawGrid();
int main() {
while (true) {
moveSnake(); // 移动蛇
drawGrid(); // 绘制网格
if (snake[0][0] == 0 || snake[0][0] >= ROWS || snake[0][1] >= COLS) break; // 判断是否吃到墙
for (int i = 0; i < sizeof(snake) / sizeof(snake[0]); i++) {
if (snake[i][0] == snake[SNAKE_HEAD][0] && snake[i][1] == snake[SNAKE_HEAD][1]) {
snake[i + 1][0] = snake[i][0];
snake[i + 1][1] = snake[i][1]; // 长蛇
break;
}
}
}
return 0;
}
void moveSnake() {
int newRow = snake[SNAKE_HEAD][0], newCol = snake[SNAKE_HEAD][1];
switch (direction) {
case UP:
newCol--;
break;
case DOWN:
newCol++;
break;
case LEFT:
newRow--;
break;
case RIGHT:
newRow++;
break;
}
// 检查新位置是否合法,并更新蛇的位置
if (newRow >= 0 && newCol >= 0 && newRow < ROWS && newCol < COLS && grid[newRow][newCol] != SNAKE_BODY) {
snake[SNAKE_HEAD][0] = newRow;
snake[SNAKE_HEAD][1] = newCol;
grid[newRow][newCol] = SNAKE_HEAD;
}
}
void drawGrid() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (grid[i][j] == SNAKE_HEAD)
printf("O ");
else if (grid[i][j] == SNAKE_BODY)
printf("X ");
else
printf(".");
}
printf("\n");
}
}
```
这是一个简化的版本,实际游戏中还需要添加食物生成、得分计算等功能,并可能需要引入更多复杂的数据结构和算法。记住,这个代码在控制台环境中运行,没有图形化用户界面。
阅读全文