8

我也来开发2048之终极奥义

 3 years ago
source link: https://blog.csdn.net/eclipsexys/article/details/24582957
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我也来开发2048之终极奥义

本次教程跟之前隔了不少时间哈,有点忘记了的建议先看看前面的熟悉下,今天我准备把这个2048给结束了,拖了这么久。

按照惯例,我们已经把准备工作都做好了,今天这一部分信息量比较大,也是整个游戏的核心所在,所以我准备分功能来讲,最后大家结合源码来看就不会感觉太吃力了。

1、初始化游戏

初始化的时候,我们要干嘛呢,首先要看配置,配置了几行,然后先画好面板,然后要给在面板上随机生成2个数字Item,这涉及到2个方法,一个是初始化面板,一个是添加随机数字

在判断生成2、4的时候,我们使用了通常产生范围随机数的方法,同时指定2和4的比例在1:4,当然这个大家可以根据需要更改

2、具体参数等初始化

这个比较简单了,直接上代码,大家应该都看得懂

这部分最好还是结合源码看比较好,注释清晰

3、触摸事件

触摸的时候判断4个方向,这个基本也是通用的写法了,不多说了

其中判断偏移的方法


下面我们来讲2048的终极奥义了,就是算法的实现,具体的算法在第一篇中已经讲解了大概的过程, 点我去看,下面我们选一个方向来讲如何实现


概括来说,就是选取基准,挨个比较,重新排列

代码很清晰,大家看看就知道了,关键是如何总结出这个算法。

4、下面就是判断游戏什么时候需要新加入一个数字Item

当当前的数字矩阵结构域上次的结构发生差别的时候,我们就要add一个新的数字Item了

这个地方我们使用了一个历史矩阵来存储上一次的数字矩阵

5、最后就是如何判断结束了

如果当前还有空格的Item,则必定没有结束,若相邻的数字都没有相同的数字,则必定结束,若出现配置的Goal,则赢了

下面放出一些最终的图片:

Center
Center
Center

由于刚换了工作,上下班时间倍增,所以写代码的时间也少了,其实关于这个游戏我还有很多想法没做,这个版本的2048,比网上的版本,多了撤销上次移动功能,多了可以定制游戏维数的功能,多了配置目标值的功能,我这个版本的2048,配置要求极低,相比cocos2dx版本的来说,极大的降低了电量消耗,可配置性更强。这些都是我在玩的过程中,觉得不爽的地方,然后改进的,还有一些想法,目前还没有去做,平时工作去做android的framework了,应用层也就研究的少了,希望大家能改进我的代码,做出更好的2048。

1、添加debug功能,也称作弊后门,我原来是想,当手指滑动超过多少距离后,调用一个新方法,设置添加的随机数的位置和大小,这个用我现在的代码是很好实现的,只要把addRandom方法改下,写一个debugRandom方法就OK了

2、分享功能,这个用ShareSdk就可以了,玩游戏嘛,就是要大家一起玩才好玩,无社交不游戏

3、更换2、4、8、16……数字的背景,这个网上很多了,我们也可以自定义一套背景,这个实现也是比较简单的,只要把GameItem这个类里面的Item的背景添加一个set方法就ok了

以上,终了

以下,刷代码

PS 需要源码的请留言
PS 需要源码的请留言

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK