vc++6.0贪吃蛇代码
时间: 2023-07-31 10:05:58 浏览: 86
以下是一个简单的 VC++6.0 贪吃蛇代码示例,希望能帮到你:
```c++
#include <windows.h>
#include <time.h>
#include <conio.h>
#define MAX_X 80
#define MAX_Y 25
// 贪吃蛇身体结构体
struct Snake
{
int x;
int y;
Snake *next;
};
Snake *head; // 贪吃蛇头指针
int direction; // 贪吃蛇行进方向
int score; // 得分
int fruitX, fruitY; // 水果位置
// 初始化贪吃蛇
void initSnake()
{
// 初始化贪吃蛇头
head = new Snake;
head->x = MAX_X / 2;
head->y = MAX_Y / 2;
head->next = NULL;
// 初始化贪吃蛇身体
Snake *temp = head;
for (int i = 1; i <= 4; i++)
{
Snake *body = new Snake;
body->x = head->x - i;
body->y = head->y;
body->next = NULL;
temp->next = body;
temp = body;
}
// 初始化行进方向
direction = 1; // 1-左;2-右;3-上;4-下
}
// 生成水果
void generateFruit()
{
srand((unsigned)time(NULL));
fruitX = rand() % MAX_X;
fruitY = rand() % MAX_Y;
}
// 绘制游戏界面
void drawGame()
{
system("cls"); // 清屏
// 绘制上边框
for (int i = 0; i <= MAX_X + 1; i++)
{
printf("#");
}
printf("\n");
// 绘制贪吃蛇身体和水果
Snake *temp = head;
for (int i = 0; i < MAX_Y; i++)
{
printf("#");
for (int j = 0; j < MAX_X; j++)
{
if (temp != NULL && temp->x == j && temp->y == i)
{
printf("*");
temp = temp->next;
}
else if (j == fruitX && i == fruitY)
{
printf("@");
}
else
{
printf(" ");
}
}
printf("#\n");
}
// 绘制下边框和得分
printf("#");
for (int i = 0; i <= MAX_X; i++)
{
printf("#");
}
printf("#\n");
printf("Score: %d\n", score);
}
// 移动贪吃蛇
void moveSnake()
{
// 移动身体
Snake *temp = head->next;
Snake *prev = head;
while (temp != NULL)
{
int x = prev->x;
int y = prev->y;
prev->x = temp->x;
prev->y = temp->y;
temp->x = x;
temp->y = y;
prev = temp;
temp = temp->next;
}
// 移动头部
switch (direction)
{
case 1: // 左
head->x--;
break;
case 2: // 右
head->x++;
break;
case 3: // 上
head->y--;
break;
case 4: // 下
head->y++;
break;
}
// 判断是否吃到了水果
if (head->x == fruitX && head->y == fruitY)
{
score++;
Snake *body = new Snake;
body->x = prev->x;
body->y = prev->y;
body->next = NULL;
prev->next = body;
generateFruit();
}
}
int main()
{
initSnake();
generateFruit();
while (true)
{
drawGame();
if (_kbhit()) // 检测键盘输入
{
char c = _getch();
if (c == 'a' && direction != 2)
{
direction = 1;
}
else if (c == 'd' && direction != 1)
{
direction = 2;
}
else if (c == 'w' && direction != 4)
{
direction = 3;
}
else if (c == 's' && direction != 3)
{
direction = 4;
}
}
moveSnake();
Sleep(100); // 控制游戏速度
}
return 0;
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)