贪吃蛇游戏代码devc++的
时间: 2025-07-05 14:11:35 浏览: 3
在 Dev-C++ 环境下开发贪吃蛇游戏,需要使用基本的 C++ 语法以及控制台图形库(如 `conio.h` 和 `windows.h`)来实现键盘输入和延迟功能。以下是一个完整的贪吃蛇游戏代码示例,适用于 Dev-C++ 5.11 编译器环境。
### 贪吃蛇游戏完整代码
```cpp
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <ctime>
using namespace std;
#define framex 2
#define framey 2
#define wide 30
#define high 20
struct Snake {
int x[100], y[100];
int length;
int speed;
int count;
time_t tm1;
};
void gotoxy(int x, int y) {
COORD pos = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
void drawFrame() {
for (int i = framey; i <= high + framey; i++) {
gotoxy(framex, i);
cout << "■";
gotoxy(wide + framex, i);
cout << "■";
}
for (int i = framex; i <= wide + framex; i++) {
gotoxy(i, framey);
cout << "■";
gotoxy(i, high + framey);
cout << "■";
}
}
void initsnake(Snake *snake) {
snake->x[0] = framex + 2;
snake->y[0] = framey + high / 2;
snake->count = 0;
snake->length = 3;
snake->speed = 400;
snake->tm1 = time(NULL);
for (int i = 1; i < snake->length; i++) {
snake->x[i] = snake->x[i - 1] - 1;
snake->y[i] = snake->y[i - 1];
}
}
void showSnake(Snake *snake) {
for (int i = 0; i < snake->length; i++) {
gotoxy(snake->x[i], snake->y[i]);
cout << "★";
}
}
void clearSnake(Snake *snake) {
for (int i = 0; i < snake->length; i++) {
gotoxy(snake->x[i], snake->y[i]);
cout << " ";
}
}
bool moveSnake(Snake *snake, int dx, int dy) {
int nx = snake->x[0] + dx;
int ny = snake->y[0] + dy;
// 检查是否撞墙
if (nx <= framex || nx >= framex + wide || ny <= framey || ny >= framey + high) {
return false;
}
// 检查是否撞到自己
for (int i = 0; i < snake->length; i++) {
if (snake->x[i] == nx && snake->y[i] == ny) {
return false;
}
}
// 移动蛇身
clearSnake(snake);
for (int i = snake->length - 1; i > 0; i--) {
snake->x[i] = snake->x[i - 1];
snake->y[i] = snake->y[i - 1];
}
snake->x[0] = nx;
snake->y[0] = ny;
showSnake(snake);
return true;
}
void gameLoop() {
Snake snake;
initsnake(&snake);
showSnake(&snake);
int dx = 1, dy = 0;
while (true) {
if (_kbhit()) {
char ch = _getch();
switch (ch) {
case 'w': if (dy != 1) { dx = 0; dy = -1; } break;
case 's': if (dy != -1) { dx = 0; dy = 1; } break;
case 'a': if (dx != 1) { dx = -1; dy = 0; } break;
case 'd': if (dx != -1) { dx = 1; dy = 0; } break;
}
}
if (!moveSnake(&snake, dx, dy)) {
cout << "\nGame Over!" << endl;
break;
}
Sleep(snake.speed);
}
}
int main() {
system("cls");
drawFrame();
gameLoop();
return 0;
}
```
### 说明:
- **gotoxy** 函数用于控制光标位置,从而实现在控制台中绘制图形。
- **drawFrame** 函数用于绘制游戏边界。
- **initsnake** 函数初始化蛇的位置和长度[^1]。
- **showSnake** 和 **clearSnake** 分别用于显示和清除蛇的身体。
- **moveSnake** 控制蛇的移动,并检测碰撞。
- **gameLoop** 是主循环函数,处理用户输入并更新游戏状态。
### 注意事项:
1. 在 Dev-C++ 中编译时,请确保项目设置为 Win32 控制台应用程序。
2. 需要包含头文件 `<windows.h>` 来支持 `Sleep()` 和 `SetConsoleCursorPosition` 功能。
3. 游戏控制键为 WASD 键,分别对应上下左右方向。
阅读全文
相关推荐

















