2048游戏开发教程:C/C++步步引导

发表时间: 2024-03-28 14:09

前言

今天给大家带来了首篇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小游戏就开发完成,效果图如最开始的小视频,实现非常简单,如果大家喜欢,麻烦点个关注吧。

如果大家想要自己玩一下我做的小游戏或者想要看一下源码就在下面留言吧,我发给大家。