写一段完整的c++贪吃蛇代码
时间: 2024-12-20 13:22:10 浏览: 27
当然可以。下面是一个简单的C++控制台版贪吃蛇游戏的代码示例。这个版本使用了基本的文本界面,并实现了贪吃蛇的基本移动规则。
```cpp
#include <iostream>
#include <conio.h> // 这里包含用于键盘输入的头文件
using namespace std;
const int width = 20; // 窗口宽度
const int height = 15; // 窗口高度
int snake_x = 4, snake_y = 7, food_x = rand() % width, food_y = rand() % height;
bool gameOver = false;
void drawSnake();
void moveSnake(int direction);
void checkCollision();
int main() {
while (!gameOver) {
cout << "贪吃蛇游戏\n";
drawSnake();
// 获取按键并处理方向
char key = _getch();
switch (key) {
case 'w': moveSnake(0); break; // 上
case 's': moveSnake(1); break; // 下
case 'a': moveSnake(2); break; // 左
case 'd': moveSnake(3); break; // 右
default: continue;
}
checkCollision();
if (snake_x == food_x && snake_y == food_y) {
food_x = rand() % width;
food_y = rand() % height;
} else {
gameOver = true;
}
}
cout << "\nGame Over! 按任意键退出...\n";
getch();
return 0;
}
void drawSnake() {
// 绘制蛇和食物
for (int i = 0; i < snake_body.size(); ++i) {
int x = snake_body[i].x, y = snake_body[i].y;
cout << "+---+";
if (x == snake_x && y == snake_y)
cout << " O"; // 当前位置
else
cout << " ";
cout << "| |\n";
}
cout << "+---+";
if (food_x == snake_x && food_y == snake_y)
cout << " F"; // 食物
else
cout << " ";
cout << "| |\n";
}
void moveSnake(int direction) {
int newX, newY;
switch (direction) {
case 0: newY = snake_y - 1; break; // 上
case 1: newY = snake_y + 1; break; // 下
case 2: newX = snake_x - 1; break; // 左
case 3: newX = snake_x + 1; break; // 右
}
snake_body.push_back({newX, newY});
if (snake_body[0].x == snake_body[snake_body.size() - 1].x &&
snake_body[0].y == snake_body[snake_body.size() - 1].y) {
gameOver = true;
} else {
snake_body.erase(snake_body.begin());
}
}
void checkCollision() {
int x = snake_body.back().x, y = snake_body.back().y;
if (x < 0 || x >= width || y < 0 || y >= height ||
snake_body.find({x, y}) != snake_body.end()) {
gameOver = true;
}
}
// 初始化蛇的身体,这里简单地设置一个头部
vector<pair<int, int>> snake_body = {{snake_x, snake_y}};
```
注意,这是一个非常基础的实现,没有使用图形化库,也没有复杂的边界检查和碰撞检测。如果你想创建更完整的游戏体验,建议学习一些图形处理库如SFML或SDL,并对游戏逻辑进行优化。
阅读全文