今天给大家带来了首篇C++小游戏开发分享,2048小游戏,应该大家都玩过的一款小游戏,废话不多说了,先看一段完成后效果图。
软件:VS2019 开发语言:C/C++ 工具:Easyx图形库
1.初始化需要的参数:初始化4*4方格的位置信息,初始化每个方格显示的颜色和数字。
2.初始化显示界面,绘制幕布
3.显示初始化界面,绘制16个方格,以及显示初始的数字。
unsigned char UpdataShowWidows()
{
int i, j;
DWORD l_u32Color;
char l_u8ShowValue[5];
for (i = 0; i < ROW_NUM; i++)
{
for (j = 0; j < CLO_NUM; j++)
{
l_u32Color = g_u32Color[g_u32EveryBoxColor[i][j]];
//画方格
setfillcolor(l_u32Color);
solidroundrect(g_stEveryBoxAxis[i][j].m_u32BoxStartX, g_stEveryBoxAxis[i][j].m_u32BoxStartY, g_stEveryBoxAxis[i][j].m_u32BoxEndX, g_stEveryBoxAxis[i][j].m_u32BoxEndY, g_stEveryBoxAxis[i][j].m_u32BoxRoundHeight, g_stEveryBoxAxis[i][j].m_u32BoxRoundWidth);
//显示数字
if (g_u32EveryBoxValue[i][j] != 0)
{
sprintf_s(l_u8ShowValue, "%d", g_u32EveryBoxValue[i][j]);
setbkmode(TRANSPARENT);
if (g_u32EveryBoxValue[i][j] <= 4)
settextcolor(RGB(119, 110, 101));
else
settextcolor(WHITE);
settextstyle(50, 0, "黑体");
outtextxy(g_stEveryBoxAxis[i][j].m_u32BoxStartX, g_stEveryBoxAxis[i][j].m_u32BoxStartY + 25, l_u8ShowValue);
}
}
}
return 0;
}
4.这时候最初的效果图就已经成型了如图所示:
这时候不能进行移动,接下来我们需要添加移动功能。
5.重点来了,当我们使用键盘方向键的时候,需要进行格子移动,移动算法分为上下左右四种,但是大体的逻辑是一样的,下面我给大家展示其中一个:
//向下移动
void MoveToDown()
{
int i, j;
int l_u32LastHaveDataIdx = 0;
for (i = 0; i < CLO_NUM; i++)
{
l_u32LastHaveDataIdx = ROW_NUM - 1;
for (j = ROW_NUM - 2; j >= 0 ; j--)
{
if (g_u32EveryBoxValue[j][i] != 0)
{
if (g_u32EveryBoxValue[l_u32LastHaveDataIdx][i] == 0) //向下走
{
g_u32EveryBoxValue[l_u32LastHaveDataIdx][i] = g_u32EveryBoxValue[j][i];
g_u32EveryBoxColor[l_u32LastHaveDataIdx][i] = g_u32EveryBoxColor[j][i];
g_u32EveryBoxValue[j][i] = 0;
g_u32EveryBoxColor[j][i] = 0;
g_u8DataIsChangeFlag = 1;
}
else if (g_u32EveryBoxValue[l_u32LastHaveDataIdx][i] == g_u32EveryBoxValue[j][i])
{
g_u32EveryBoxValue[l_u32LastHaveDataIdx][i] += g_u32EveryBoxValue[j][i];
g_u32EveryBoxColor[l_u32LastHaveDataIdx][i] += 1; //颜色深度+1
g_u32EveryBoxValue[j][i] = 0;
g_u32EveryBoxColor[j][i] = 0;
g_u8DataIsChangeFlag = 1;
}
else
{
l_u32LastHaveDataIdx--;
if (l_u32LastHaveDataIdx >= 0 && l_u32LastHaveDataIdx != j)
{
g_u32EveryBoxValue[l_u32LastHaveDataIdx][i] = g_u32EveryBoxValue[j][i];
g_u32EveryBoxColor[l_u32LastHaveDataIdx][i] = g_u32EveryBoxColor[j][i];
g_u32EveryBoxValue[j][i] = 0;
g_u32EveryBoxColor[j][i] = 0;
g_u8DataIsChangeFlag = 1;
}
}
}
}
}
}
6.主函数如下:
至此,我们的2048小游戏就开发完成,效果图如最开始的小视频,实现非常简单,如果大家喜欢,麻烦点个关注吧。