基于VC++五子连珠游戏的设计(3)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

基于VC++五子连珠游戏的设计(3)

2。4消息机制

该系统拥有的消息机制是独特的,当然系统也可以根据时间发生的不同来给与提供。

五子连珠同时也实现了自己独有的消息机制,依据是Windows这个平台,其功能还是为人机对弈提供服务,来对各种各样的网络消息进行响应。

2。4。1 消息机制的说明

大多数在网络中来进行消息传递的时候,都可以一种结构体来实现,那么都遵循一样的原理。整个五子连珠游戏的消息机制是通过Windows这个平台来实现的,在游戏中,不同的时间发生,系统有对应的相应方式来响应[8]。游戏的系统也有自己专门的消息机制来实现对游戏上各个消息的响应。

2。4。2 消息机制的结构

针对收到的消息数据,系统能根据其消息的类型自行进行分类归整处理,然后存入相对应的类里面[9]。

当CTable收到人机对战模式中的消息数据时,会用这个switch结构来分析这些数据,并且把这些数据进行分类归整,在发送到相应的类里面。

2。4。3 各种消息说明

可以根据自己的理解来分析哪些函数的功能,比如x。y表示落子的横纵坐标数据,它是根据uMsg的变化而变化的[10]。

(1)落子消息——MSG_PUTSTEP

函数表明当对手对玩家你发送晦气请求是,只有函数uMsg有效,其他均无效。

(2)接收消息——ReceiveMsg

在人机对战模式中,这些接受的信息只有那些电脑NPC所落子的消息MSG_PUTSTEP[11],可以看做是电脑的模拟落子,因为那些都是算法设计出来的固定模型。

(3)悔棋消息——MSG_BACK

此函数表明当对手对玩家你发送晦气请求是,只有函数uMsg有效,其余函数无效。

3。主要算法

在五子连珠的游戏中,有很多部分是涉及到算法的,就拿人机之间的对战来简单介绍说明。同样都要在十分合理的情况下来进行,下面将详细说明五子连珠游戏在使用中的具体算法。

3。1 判断胜负

    五子连珠游戏的胜负判断,往往依据棋盘上的某个点来实现,依此开始,右方、下方、右下方、左下方四个方向是否可以让五个同色且连续的棋子在同一条直线上出现。

如图所示:

图2  方向   

人机对战:己方先下,然后电脑,无论是横着、竖着、或是斜着先达到五个即可消除得分,游戏结束时得分最高者即获胜。

需要特别说明一下,程序在执行的时候,每一次的循环,都会有无需纳入思考范围的坐标,因为边界的限制,棋盘内的一切横坐标大于亦或等于十一点的,都将无法构成五个棋子相连的条件,这样的话,可以提高搜索的速度。文献综述

3。2人机对弈算法

人机对弈算法基本按照 CGame 基类定义的接口标准,封装在了 COneGame 派生类之中。下面将对这个算法进行详细地介绍。

3。2。1获胜组合

它是一个三维的,由数组组成的,包括了一切可以取胜的情况。换句话说,对于每个已经落下的棋子的左边,胜利那组共有572种的可能[12]。那么相对于每个胜利的组合的坐标来看,都可以设置成三维的组数。

已经拥有了胜利的组合以后,就可以依据这些组合来完成,进行参考,572种组合里,自己的控制局面和对手的局面控制来进行对比,并且打分,换句话说,就是依据这个来进行打分处理,那么接下来我们来进行所有职权的估算,给己方设置一个理想的下棋落子的定位[13]。因为是双方的对垒,所以双方的游戏玩家都得需要属于自己的的那份胜利的组合。 (责任编辑:qin)