参考
- 《C和C++游戏趣味编程》
贪吃蛇游戏
键盘控制小蛇上、下、左、右移动,迟到食物后长度加1;蛇头碰到自身或窗口边缘,游戏失败
程序框架
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
// 全局变量定义
void startup() // 初始化函数
{
}
void show() // 绘制函数
{
}
void updateWithoutInput() // 与输入无关的更新
{
}
void updateWithInput() // 和输入有关的更新
{
}
int main()
{
startup(); // 初始化函数,仅执行一次
while (1)
{
show(); // 进行绘制
updateWithoutInput(); // 和输入无关的更新
updateWithInput(); // 和输入有关的更新
}
return 0;
}
绘制游戏地图和蛇
绘制网格状的游戏地图,使用二维数组Blocks存储每个网格的信息。二维数组Blocks中也可以记录蛇的信息。设定元素值为0表示空,画出灰色的方格;元素值为1表示蛇头,蛇头后的蛇身依次为2、3、4、5等正整数,画出彩色的方格
int i, j;
for (i = 0; i < HEIGHT; i++)
{
for (j = 0; j < WIDTH; j++)
{
if (Blocks[i][j] > 0)
{
setfillcolor(HSVtoRGB(Blocks[i][j] * 10, 0.9, 1));
}
else
{
setfillcolor(RGB(150, 150, 150));
}
fillrectangle(j * BLOCK_SIZE, i * BLOCK_SIZE, (j + 1) * BLOCK_SIZE, (i + 1) * BLOCK_SIZE);
}
}

小蛇向右移动
假设小蛇初始元素值为54321,其中1位蛇头,5432位蛇身。首先将二维数组中所有大于0的元素加1,得到65432;然后将最大值6变成0,即去除了原来的蛇尾;最后将2右边的元素由0变成1,即实现了小蛇向右移动
void moveSnake()
{
int i, j;
for (i = 0; i < HEIGHT; i++)
{
for (j = 0; j < WIDTH; j++)
{
if (Blocks[i][j] > 0)
{
Blocks[i][j]++;
}
}
}
int oldTail_i, oldTail_j, oldHead_i, oldHead_j;
int max = 0;
for (i = 0; i < HEIGHT; i++)
{
for (j = 0; j < WIDTH; j++)
{
if (max < Blocks[i][j])
{
max = Blocks[i][j];
oldTail_i = i;
oldTail_j = j;
}
if (Blocks[i][j] == 2)
{

本文详细介绍了如何使用C++实现经典贪吃蛇游戏,涉及键盘控制、蛇的移动、边界检测、食物生成与长度增加、以及游戏失败的处理。通过逐步代码解析,展示了游戏逻辑和关键函数的编写过程。

1万+

被折叠的 条评论
为什么被折叠?



