贪吃蛇c++代码简单的
时间: 2024-11-22 20:25:38 浏览: 39
贪吃蛇是一个经典的控制台游戏,下面是一个非常基础的C++版贪吃蛇代码示例。这个版本仅包含了基本的移动和吃到食物的功能,没有涉及碰撞检测或游戏结束条件。首先,我们需要创建蛇、食物和控制结构。
```cpp
#include <iostream>
using namespace std;
#define SNAKE_SIZE 3
#define MAX_WIDTH 20
#define MAX_HEIGHT 15
char snake[MAX_WIDTH][MAX_HEIGHT];
bool food_spawned = false;
int x_food, y_food;
int x_snake[SNAKE_SIZE], y_snake[SNAKE_SIZE];
// 初始化函数
void init() {
// 清零地图
for(int i=0; i<MAX_WIDTH; i++) {
for(int j=0; j<MAX_HEIGHT; j++) {
snake[i][j] = ' ';
}
}
// 食物随机生成
x_food = rand() % (MAX_WIDTH - SNAKE_SIZE);
y_food = rand() % (MAX_HEIGHT - SNAKE_SIZE);
snake[x_food][y_food] = '#';
food_spawned = true;
}
// 移动蛇
void moveSnake() {
int newX, newY;
// 选择下一个位置
newX = (x_snake[0] + x_direction) % MAX_WIDTH;
newY = (y_snake[0] + y_direction) % MAX_HEIGHT;
// 更新蛇的位置
for(int i = 1; i < SNAKE_SIZE; i++) {
snake[newX][newY] = ' ';
newX = (x_snake[i] + x_direction) % MAX_WIDTH;
newY = (y_snake[i] + y_direction) % MAX_HEIGHT;
}
snake[newX][newY] = '#'; // 将头部移动到新位置
}
int main() {
srand(time(NULL)); // 设置随机种子
init();
// 控制方向,这里简单地设置四个方向(上下左右)
int x_direction = 0, y_direction = 0; // 可以通过输入或按键改变
while(true) {
// 显示蛇和食物
for(int i=0; i<SNAKE_SIZE; i++) {
cout << snake[x_snake[i]][y_snake[i]];
}
cout << "\n";
if(food_spawned) { // 如果有食物,移动食物
x_food = (x_food + 1) % MAX_WIDTH;
y_food = (y_food + 1) % MAX_HEIGHT;
if(x_food == x_snake[0] && y_food == y_snake[0]) {
food_spawned = false;
} else {
snake[x_food][y_food] = ' ';
snake[x_snake[0]][y_snake[0]] = '#';
}
}
moveSnake(); // 移动蛇
// 一些边界处理和游戏逻辑...
// 获取用户的输入,更新蛇的方向...
// 这部分通常会更复杂,例如读取用户按下的是上、下、左还是右键等...
// ...然后继续循环
// 按q退出游戏
char key = getchar();
if(key == 'q' || key == 'Q') {
cout << "Game Over!" << endl;
return 0;
}
}
}
```
阅读全文