用easyx写一个贪吃蛇游戏
时间: 2023-07-01 11:07:07 浏览: 95
c++,easyx,vs,贪吃蛇(曼巴)游戏
好的,首先需要在电脑上安装EasyX图形库。安装完成后,可以使用以下代码编写贪吃蛇游戏:
```c++
#include <graphics.h>
#include <conio.h>
#include <time.h>
#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80
const int n = 20; // 地图大小
const int size = 30; // 每个方格的大小
int map[n][n]; // 地图
int snake[100][2]; // 蛇的坐标
int length; // 蛇的长度
int dir; // 蛇的方向
int food[2]; // 食物的坐标
void initMap() // 初始化地图
{
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
map[i][j] = 0;
}
}
}
void initSnake() // 初始化蛇
{
length = 3;
dir = RIGHT;
snake[0][0] = 0;
snake[0][1] = 0;
snake[1][0] = 0;
snake[1][1] = 1;
snake[2][0] = 0;
snake[2][1] = 2;
map[0][0] = 1;
map[0][1] = 2;
map[0][2] = 3;
}
void drawMap() // 绘制地图
{
setfillcolor(RGB(0, 255, 0));
bar(0, 0, n * size, n * size);
setlinecolor(RGB(0, 0, 0));
for (int i = 1; i < n; i++) {
line(0, i * size, n * size, i * size);
line(i * size, 0, i * size, n * size);
}
}
void drawSnake() // 绘制蛇
{
setfillcolor(RGB(255, 0, 0));
for (int i = 0; i < length; i++) {
bar(snake[i][1] * size, snake[i][0] * size, (snake[i][1] + 1) * size, (snake[i][0] + 1) * size);
}
}
void createFood() // 生成食物
{
srand(time(NULL));
int x, y;
do {
x = rand() % n;
y = rand() % n;
} while (map[x][y] != 0);
food[0] = x;
food[1] = y;
map[x][y] = -1;
setfillcolor(RGB(255, 255, 0));
bar(y * size, x * size, (y + 1) * size, (x + 1) * size);
}
void move() // 移动蛇
{
int x = snake[length - 1][0];
int y = snake[length - 1][1];
map[x][y] = 0;
for (int i = length - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
switch (dir) {
case LEFT:
snake[0][1]--;
break;
case RIGHT:
snake[0][1]++;
break;
case UP:
snake[0][0]--;
break;
case DOWN:
snake[0][0]++;
break;
}
x = snake[0][0];
y = snake[0][1];
if (x == food[0] && y == food[1]) {
length++;
createFood();
}
if (x < 0 || x >= n || y < 0 || y >= n || map[x][y] != 0) {
exit(0);
}
map[x][y] = 1;
}
void keyDown(int key) // 处理按键事件
{
switch (key) {
case LEFT:
if (dir != RIGHT) {
dir = LEFT;
}
break;
case RIGHT:
if (dir != LEFT) {
dir = RIGHT;
}
break;
case UP:
if (dir != DOWN) {
dir = UP;
}
break;
case DOWN:
if (dir != UP) {
dir = DOWN;
}
break;
}
}
int main()
{
initgraph(n * size, n * size);
initMap();
initSnake();
createFood();
while (true) {
drawMap();
drawSnake();
move();
Sleep(100);
if (_kbhit()) {
keyDown(_getch());
}
}
return 0;
}
```
代码中使用了EasyX库来绘制图形,其中:
- `initMap`函数用于初始化地图。
- `initSnake`函数用于初始化蛇。
- `drawMap`函数用于绘制地图。
- `drawSnake`函数用于绘制蛇。
- `createFood`函数用于生成食物。
- `move`函数用于移动蛇。
- `keyDown`函数用于处理按键事件。
- `main`函数是程序的入口。
在运行程序之前,需要将EasyX库添加到工程中,并在链接选项中添加`graphics.lib`库文件。
阅读全文