首页 > 分享 > 思考的救赎(二):三消游戏功能完善

思考的救赎(二):三消游戏功能完善

思考的救赎(二):三消游戏功能完善

最新推荐文章于 2022-12-12 10:48:03 发布

曾经去过跨越一个小时的地方 于 2017-09-20 22:09:45 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

一、引言

昨天我已经在上一篇博客里实现了三消游戏的初始化和消除功能,然而并没有实现一般三消游戏都有的重力降落、自动消除、随机补充的功能。这篇博客就是研究如何实现这些功能的。

让我们总结下我们将要实现的三消游戏的功能:

1. 初始化

2. 消除

3. 重力降落

4. 自动消除(重力降落后可能引起的消除操作)

5. 随机补充(补充消除格子)

6. 额外功能:重新开始、计算分数

在上一篇博客我们已经实现了第 1 步和第 2 步,现在我们开始接下来功能的实现吧。

ps:
想要了解上一篇博客内容的同学可以点击这里:
思考的救赎(一):三消游戏实现探索

想要获取本系列博客代码的同学可以点击这里:
wangying2016/ThreeClearGame

哈哈哈,先来看下我们的最终效果展示吧:

demo.gif

二、开始前的一点架构

我们要实现如上 Gif 图的效果,我们就要知道整个游戏的流程是什么样子的:

三消游戏流程图

这里我特意花了一个流程图(T_T 虽然有点不雅观),但是已经可以非常详细的说明我们一次消除过程中,到底程序做了什么。

也就是说,我们在消除两个格子之后,重力降落、自动消除和随机补充这三个行为是同步进行的(也就是一个结束了下一个才能开始的)。

并且由于自动消除的行为发生,我们会不停的随机补充新的格子,然后又可能会发生自动消除行为,最后又会触发我们的随机补充行为…

直到我们的当前网格里,已经没有三消可能了,才会停止下来。

这个过程的模拟,是由 SOUI 的定时器实现的。

1. 当我们成功消除格子之后,我们设置消除格子为删除皮肤,然后刷新界面。

// 刷新网格 void CMainDlg::RefreshNet(std::vector<std::vector<Grid>> vecNet) { // 删除计时器 KillTimer(TIMER_LAND); // 刷新网格 SOUI::STileView* pTileView = FindChildByName2<SOUI::STileView>(L"tv_net"); assert(pTileView); CNetAdapter* pAdapter = static_cast<CNetAdapter*>(pTileView->GetAdapter()); if (pAdapter != nullptr) { pAdapter->UpdateNet(vecNet); pAdapter->notifyDataSetChanged(); } // 设置分数 SetScore()123456789101112131415

相关知识

思考的救赎(一):三消游戏实现探索
三消射击游戏下载
三消游戏有哪些好玩 十大必玩三消游戏排行
三消游戏全方位解读
三消游戏有哪些 热门三消游戏排行榜
三消游戏哪个好 十大经典三消游戏精选
三消游戏有哪些 2024三消游戏排行榜前十
三消游戏哪些好玩 好玩的三消游戏排行榜前十
三消游戏哪个好 最新三消游戏精选
火爆的三消游戏大全合集2025 高热度的三消游戏推荐

网址: 思考的救赎(二):三消游戏功能完善 https://m.huajiangbk.com/newsview1753489.html

所属分类:花卉
上一篇: 《Mirror》续作《Mirro
下一篇: 并非R18?一杯奶茶钱的三消游戏