还是那个目的 ,麻将游戏首先必须了解代码, 然后再来修改。将所有的头文件和源文件相关的地方都介绍过后,我相信大家应 该自己也知道应该怎么修改了。但是最后我们还是要提供一个实例,以供大家参 考学。
DlgCustomRule.h 头文件:
代码段 1:
自定义配置:
自定义配置以后在我们修改属于自己的玩法的时候会用到,这里我 们只看一下它是怎么初始化:
这里我们可以看到在初始化的时候调用了自定义配置,通过两个判断和一个循环
对其复制和添加配置。
代码段 2:
这里都是一些函数的声明,这些函数除了初始化函数我们后面会用到其他的函数 与本课程关系不大,而初始化函数大家看名字也应该知道他的用作了。后面讲初 始化过程的时候会详细讲解这个函数。
FvMask.h 头文件:
FvMask 头文件是个命名空间,这里面的内容大家现在暂时不用去管。我们这次
的课程主要讲与玩法相关的东西,其他的东西除了非讲不可的,其他都一笔带过。
GameLogic.h 头文件:
代码段 1:
动作标志:
这里定义了一些列的动作类型,这里的长沙杠 和杠牌类型是不同的, 所以采用了不同的动作标示,之前我们提到过如果要改过来只需简单的调用就可 以了。当然这里我们可以添加自己的动作标示,不过同样添加了标示需要添加标 示的实现代码。让我们看一下这些动作标示是怎么调用的!
从上面的看函数代码我们可以看出来,这个函数的实现,就是讲要碰的牌作为参 数代入函数内,首先进行一个效验,然后进行过滤,如果是无效的就返回无类型; 最后用一个组合语句,进行碰牌的判断,根据判断结果返回碰牌类型或者无类型。 代码段 2:
这里是胡牌类型的定义,这里我们还是用一个定义来举例,后面的教程会详细的 讲解每一种胡牌的算法。这里只是让大家简单的看一下,有一个印象而已。
大对子就是我们所谓的碰碰胡,这里我们看到这个函数实现起来很简单,就是讲
牌的组合类型代入这个函数,用一个循环来完成,在循环中只要发现一个是吃牌的类型就返回 false,如果全部循环完毕没有发现任何吃牌的类型,那就是大对
子了。
代码段 3:
这里的几个结构体与我们的玩法修改都有关系,但是我们不需要修改这些结构体, 我们只需要使用,如果将这里的四个结构体都讲一次花费的时间太久了,后面结 合实际的代码段我们还会用到这些结构体,这里我们还是只简单的看一下他们的 使用情况。用一个例子来说明这些结构体的使用方法。
这里判断杠的时候创建了这个结构体变量,然后将它代入杠牌分析函数里面,偶 们进一步看看这个函数:
这个函数的最后一个参数就是我们之前代入的变量。 代码段 4:
关于权位的问题后面我们会细说,这里就不多说了。
代码段 5-1:
代码段 5-2:
代码段 5-3:
代码段 5-4:
这里是游戏的逻辑类,这里就是我们需要修改的核心内容之一。我们之后的课程 大部分都会围绕这个类来讲。
前面我们简单的介绍了胡牌分析中的大对子和碰牌, 这里我们再介绍一个:
是否听牌:
首先我们来看一下这个函数声明,bool 类型,三个参数:第一个手 中牌的索引;第二个组合子项;第三个组合的数目;这样我估计大家还是不明白,还是让我们进入这个函数内部看看他的实现吧:
在这个函数内部,最重要的就是一个循环,中间调用了胡牌分析的函数,从函数 内部和听 牌函数的 名字我 们可以 知道这个 函数的 实现过 程就是讲 手中的 牌和组 合代入胡牌函数里面进行判断,最后读取可以胡牌的那几张牌,也就是听牌的结 果了。
关于 GameLogic.h 头文件,我们暂时介绍到这里,其中游戏逻辑部分是我们 的核心,这里之所以没有全部讲解的原因一是因为篇幅有限,二是后面我们会详 细讲解每一个关于逻辑的变量和函数,这里就不重复讲解了。
相关课程:
- 自定义配置:
- 动作标志:
- 是否听牌:
发表评论