Android 2048游戏开发教程(四):游戏逻辑分享

       上一节中,我们已经成功的将卡牌添加到了游戏中,但只是显示在了界面上,并没有保存下来。我们在GameView中定义一个二维数组用来保存游戏界面的卡牌。

Android 2048游戏开发教程(四):游戏逻辑

       接下来,我们需要将初始化时候添加的卡片添加到cardMap数组中,如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

        这样一来,我们就将游戏界面记录下来了。

        但是上一节中,我们一下子就生成了16张卡片,这和平时游戏的时候不一致。而且我们只能生成卡片2。为了改进它,我们可以定义一个函数addRandomNumber,表示每次生成的数字(这里我们设置生成2和4的概率为9:1):

Android 2048游戏开发教程(四):游戏逻辑

       这里用到了一个emptyPoints变量,我们需要定义如下:

Android 2048游戏开发教程(四):游戏逻辑

 

       除此之外,我们还看到在上面的程序中,我们使用0表示空点,但是我们并不希望0显示在我们的游戏中,因此修改Card类的SetNumber函数如下:

Android 2048游戏开发教程(四):游戏逻辑

       同时,我们需要修改GameView中的addCards函数,使得一开始都生成空点:

Android 2048游戏开发教程(四):游戏逻辑

       接下来,我们可以开始游戏了,首先定义一个startGame函数,同时在onSizeChanged事件中调用它,如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

       同时,定义startGame函数如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

       运行查看结果,如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

       接下来,我们需要实现游戏的逻辑,也就是方块的合并。我们需要操作MoveLeft等四个函数。如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

       接下来的三个方向的移动只需要对上面的代码进行稍微修改即可,MoveRight如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

        MoveUp函数如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

         MoveDown函数如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

       至此,我们的移动功能已基本完成,测试如下:

Android 2048游戏开发教程(四):游戏逻辑

       最后,我们来完成积分的模块,每次操作得分都等于合并方块的数字之和。切换到MainActivy类,添加以下代码以获取tvScore这个标签:

Android 2048游戏开发教程(四):游戏逻辑

       接下去,为了能够在外界操作MainActivy中的tvScore,我们修改代码如下:

Android 2048游戏开发教程(四):游戏逻辑

       最后添加计分变量以及相关的操作函数:

Android 2048游戏开发教程(四):游戏逻辑

       接下去,切换到GameView中,将下面的代码添加到四个移动操作的相应位置:

Android 2048游戏开发教程(四):游戏逻辑

 

       接下来,我们需要在开始的时候清空分数:

Android 2048游戏开发教程(四):游戏逻辑

       运行测试:

Android 2048游戏开发教程(四):游戏逻辑

       接下去,我们需要在每次操作后都添加新的卡片:

Android 2048游戏开发教程(四):游戏逻辑

       其它三种情况请读者自行根据上述代码进行修改。测试结果如下图所示:

Android 2048游戏开发教程(四):游戏逻辑

      最后,我们还需要判断游戏是否结束。游戏结束的条件是没有空位并且无法继续合并。定义一个函数checkGame,如下图所示,并且在所有移动后添加新卡片时都调用一次:

Android 2048游戏开发教程(四):游戏逻辑

        checkGame函数实现如下:

Android 2048游戏开发教程(四):游戏逻辑

       至此,游戏的基本框架都已经全部完成,我们将在下一节中介绍分数的保存以及界面的美化。

-上面就是Android 2048游戏开发教程(四):游戏逻辑分享全部内容. 如果需要了解更多android开发及android游戏开发内容关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/gamedevelop/andiordkaifa/504869.html

(0)
上一篇 2020年11月20日
下一篇 2020年11月20日

精彩推荐