当前位置:首页 >> 信息与通信 >>

基于labview设计的五子棋游戏


目录
一、课程题目??????????????????????????2 二、问题描述??????????????????????????2 游戏流程图?????????????????????????2 三、基本要求??????????????????????????3 四、游戏设计流程图???????????????????????3 4.1 设计流程图????????????????????????3 4.1.1 总体设计流程图?????????????????????3 4.1.2 人机对弈模式下的游戏流程图???????????????4 4.1.3 双人对弈模式下的游戏流程图???????????????5 4.2 各模块程序设计??????????????????????7 4.2.1 初始棋盘模块??????????????????????7 4.2.2 多步计算模块??????????????????????7 4.2.2.1 多步计算流程图???????????????????7 4.2.2.2 多步计算前面板及程序框图??????????????8 4.2.3 决定下子方模块????????????????????10 4.2.4 判定胜负模块?????????????????????10 4.2.4.1 判定胜负模块设计前面板及程序框图?????????10 4.2.5 胜负对话模块?????????????????????11 4.3 游戏主程序设计??????????????????????13 4.3.1 五子棋主程序的程序框图???????????????13 4.3.2 五子棋的游戏界面??????????????????15 五、测试结果?????????????????????????16 六、附图???????????????????????????17 总结?????????????????????????????19 参考文献???????????????????????????19

- 0 -

一:课程题目
五子棋游戏

二:问题描述
为了供人们闲暇时间随时随地地进行娱乐,提高自己的五子棋水平,本文以 LabVIEW 为平台,设计开发了这款单机版的五子棋游戏软件。 五子棋,亦称"连五子"、"五子连"、"串珠"、"五目"、"五目碰"、"五格" 等。相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久。在古代,五子 棋棋具虽然与围棋相类同,但是下法却是完全不同的。正如《辞海》中所言,五 子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行 者为胜”。五子棋的游戏规则如下: 1. 行棋顺序: 黑先、白后,从天元开始相互顺序落子。 2. 判断胜负 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 黑棋禁手判负(Lose),白棋无禁手。黑棋禁手包括“三、三”(包括“四、三、 三”)、“四、四” (包括“四、四、三”)、“长连”。黑棋只能以“四、 三”取胜。 3. 如分不出胜负,则定为平局。 4. 对局中中途退场判为负。 5. 五连与禁手同时形成,先五为胜。 6. 黑方禁手形成时,白方应立即指出。若白方未发现或发现后未指明而继续应 子,则不能判黑方负。 7. 时间限定: 每方 20 分钟包干,然后 1 分钟读秒。

游戏流程图
从棋盘棋子的设计、各模块的搭建到主程序的编写、前面板的美化,五子棋 的游戏总体设计流程如图 2.1 所示。

- 1 -

图 2.1 五子棋游戏总体设计框图

三:基本要求
这款基于 LabVIEW 的简易五子棋游戏,有人机对弈和双人对弈两种模式。选 择游戏模式后开始游戏,设计程序对棋盘进行初始化,数组显示当期棋盘状态。 人机对弈模式中,其中一方由电脑计算下子位置;双人对弈模式中,由双方决定 下子位置。游戏中,任一方先在棋盘上形成纵向、竖向、斜向的连续相同颜色的 五个棋子的一方为胜。如果有一方获胜,此时跳出对话框,显示一方获胜,游戏 结束。按下确定,同时初始化棋盘,可以重新开始游戏。 程序主要涉及到棋盘棋子的设计,各模块的搭建、各个模块的调用及双方胜负的 判定方法及前面板的美化。

四:游戏设计流程图
4.1 设计流程图 4.1.1 总体设计流程图 游戏开始,对棋盘进行初始化,初始化完成后,由主循环控制模块来控制轮到 哪方下子,在游戏进行过程中,若有一方获胜,则跳出获胜对话框,再决定是否 重新开始游戏;如果没有一方获胜,则程序不断循环执行。五子棋游戏流程如图 4.1.1 所示。

- 2 -

图 4.1.1 五子棋游戏流程图

4.1.2 人机对弈模式下的游戏流程图 本游戏可分为两种模式:人机对弈模式和双人对弈模式。 若选择人机对弈模式,游戏开始,判断该位置是否有棋子。如无棋,则黑方 先落棋。再判断黑方是否获胜,如果黑方获胜则选择是否重新开局,选择是就重 新开始游戏,否则直接结束游戏。如果黑方没有获胜,则电脑计算下子位置,方 式同上。五子棋人机对弈模式下的的游戏流程如图 4.1.2 所示。

- 3 -

图 4.1.2 人机对弈模式下的游戏流程图

4.1.3 双人对弈模式下的游戏流程图 若选择双人对弈模式,流程基本与人机对弈类似,只是把电脑计算下子位置 改成白方下子。 五子棋双人对弈模式下的的游戏流程如图 4.1.3 所示。

- 4 -

图 4.1.3 双人对弈模式下的游戏流程图

- 5 -

4.2 各模块程序设计 4.2.1 初始棋盘模块 按下重新开始按钮后,调用该程序初始化棋盘。棋盘初始化前面板如图 4.2.1.1 所示。

图 4.2..11 初始棋盘前面板

用长 32 位的整形数值来表示棋盘大小, 数组显示当前棋盘的状态, 用循环结 构来实现,当按下重新开始按钮,调用该程序初始化棋盘。初始棋盘程序框图如 图 4.2.1.2 所示。

图 4.2.1.2 初始棋盘程序框图

4.2.2 多步计算模块 4.2.2.1 多步计算流程图 判断当前的最大权值是否大于 100000,如果大于 100000 表明当前已有形成 活三的棋子,则当前位置一定要下子——已方有活三的话要继续求胜,对方有活 三的话则要阻止。如果没有活三以上的棋则开始试下子,计算最佳下棋位置。 首先在当前的最佳位置试下一个已方子—白子,然后判断下子后是否有一方 胜,如无则继续在试下子后的最佳位置下黑子,下完后再判断是否有一方胜,以 此类推。

- 6 -

当最佳位置试下完成后, 再在第二佳的位置继续试下子, 直到三个最佳位置 试下完成,试下完成后如无很好的下子位置,则选择未试下子前的最佳位置进行 下子。多步计算流程如图 4.2.2.1.1 所示。

图 4.2.2.1.1 多步计算流程图

4.2.2.2 多步计算前面板及程序框图 数值显示电脑计算出当前的最佳下子位置。 多步计算前面板如图 4.2.2.2.1 所示。

图 4.2.2.2.1 多步计算前面板

- 7 -

多步计算这个子程序相对复杂,其中应用了大量的条件结构及循环结构,看 起来较为复杂。在这个复杂的程序里也同样调用了三个子程序,像权值计算、执 行下子和判定胜负。在程序运行的过程中,这几个子程序也是不断循环执行的。 多步计算程序框图如图 4.2.2.2.2、图 4.2.2.2.3 所示。

图 4.2.2.2.2 多步计算部分程序框图

图 4.2.2.2.3 多步计算部分程序框图

- 8 -

4.2.3 决定下子方模块 数值输出下棋步数,计算轮到哪方下子。决定下子方前面板如图 4.2.3.1 所示。

图 4.2.3.1 决定下子方前面板

用一个商与余数函数实现,商+1 为下棋步数,余数为决定哪方下子。决定下 子方程序框图如图 4.2.3.2 所示。

图 4.2.3.2 决定下子方程序框图

4.2.4 判定胜负模块 4.2.4.1 判定胜负模块设计前面板及程序框图 数组显示当前棋盘状态, 布尔量指示某一方获胜。 判定胜负前面板如图 4.2.4.1.1 所示。

- 9 -

图 4.2.4.1.1 判定胜负前面板

计算当前行的子数,相加为 10 是表示,五个子全为黑,黑胜;相加为 0 时表 示五个子全为白,白胜。其他方向相同。判定胜负程序框图如图 4.2.4.1.2 所示。

图 4.2.4.1.2 判定胜负部分程序框图

4.2.5 胜负对话模块 胜负对话前面板如图 4.2.5.1 所示:用布尔量来指示哪方获胜。

- 10 -

图 4.2.5.1 胜负对话模块前面板

当行或列的输出为-1 时,表明当前棋盘没有棋子被下,但是,因为查询用户 下子的循环又被停止,可判定此局被用户退出或程序被用户退出,此时不应该弹 出胜负对话框,并用此方法代替使用“退出”或“重新开始”两个布尔量的局部 变量来停止循环。用高亮执行,运行后点击“重新开始”后可以更方便地看出此 处原理。胜负对话程序框图如图 4.2.5.2 所示。

图 4.2.5.2 胜负对话模块程序框图

当行或列的输出不为-1 时,表明当前棋盘有棋子被下,此时有两种可能,黑 子胜或白子胜,若黑子胜则跳出“黑子胜”对话框,若白子胜则跳出“白子胜” 对话框。胜负对话程序框图如图 4.2.5.3 所示。

- 11 -

图 4.2.5.3 胜负对话模块程序框图

4.3 游戏主程序设计 4.3.1 五子棋主程序的程序框图 由于主程序的程序框图较为复杂, 在完成前面模块搭建的基础上, 将各模 块作为完成各功能的模块,调用到主程序中去,为的是程序看起来简洁明了富有 条理性。五子棋两种对弈模式下的主程序程序框图如图 4.3.1.1、图 4.3.1.2 所 示。

- 12 -

图 4.3.1.1 双人对弈程序框图

- 13 -

图 4.3.1.2 人机对弈程序框图

4.3.2 五子棋的游戏界面 五子棋的游戏界面看起来很简洁, 主要包括了人机对弈和双人对弈选择、 重新 开始按钮和退出程序按钮,这是在游戏过程中最基本的功能。除此之外,还涉及 了棋子的设计、棋盘的布置及前面板的美化。五子棋主程序程序框图如 4.3.2.1 所示。

图 4.3.2.1 游戏界面

- 14 -

五、测试结果
五子棋人机对弈演示结果如图 5.1 所示:

图 5.1 人机对弈结果显示

五子棋双人对弈演示结果如图 5.2 所示:

图 5.2 双人对弈结果显示

- 15 -

六、附图

图 6.1 前面板

图 6.2 双人对弈程序框图

- 16 -

图 6.3 人机对弈程序框图

- 17 -

总结
本文只是在 LabVIEW 基础上做了个简单的程序设计,采用 LabVIEW 平台开 发的五子棋游戏,游戏界面美观,程序的设计清楚明了、简单易读。在程序的 运行过程中,有一些不足,如没有设计帮助文档及悔棋程序等,说明游戏功能 的全面性还不够强。这需要在实践中进一步完善。设计中也有一些优点,这款 单机版的五子棋游戏可以根据人数的情况,选择人机对弈或双人对弈模式,能 够满足人们随时随地的娱乐需求。

参考文献
[1] 陈锡辉 张银鸿 编著,LabVIEW 8.20 程序设计从入门到精通,清华大学出版 社,2007 [2] 王福明 于丽霞 刘吉 丁博编著,LabVIEW 程序设计与虚拟仪器,西安电子科 技大学出版社,2009 [3] 阮奇桢著, 我和 LabVIEW:一个 NI 工程师的十年编程经验, 北京航空航天大 学出版社,2010 [4] 王磊 陶梅 编著 ,精通 LabVIEW 8.0,电子工业出版社,2007 [5] LabVIEW 虚拟仪器程序设计及应用.人民邮电出版社.2008.12 [6] LabVIEW8.20 程序设计从入门到精通.清华大学出版.2007.7

- 18 -


赞助商链接
相关文章:
更多相关标签: