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

4-1 Card

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

4-2 界面记录

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

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

4-3 addRandomNumber

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

4-4 变量定义

 

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

4-5 SetNumber

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

4-6 addCards

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

4-7 onSizeChanged

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

4-8 startGame

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

4-9 阶段性结果

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

4-10 MoveLeft

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

4-11 MoveRight

        MoveUp函数如下图所示:

4-12 MoveUp

         MoveDown函数如下图所示:

4-13 MoveDown

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

4-13 阶段性结果

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

4-14 tvScore

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

4-15 MainActivity

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

4-16 Score

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

4-17 AddScore

 

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

4-18 初始化

       运行测试:

4-19 阶段性结果

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

4-20 添加卡片

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

4-21 阶段性结果

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

4-22 checkGame

        checkGame函数实现如下:

4-23 checkGame

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

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/game/677.html
2017年5月12日
发布:鸡啄米 分类:Android游戏开发 浏览: 评论:0