五子棋人机对战设计方案.doc
文本预览下载声明
五子棋人机对战设计方案
五子棋游戏介绍
五子棋起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋游戏方法简单,即在棋盘上走黑白棋子,可选择人机对战的一人游戏,也可选择人人对战的,两人游戏,先将五个棋子连成一串者获胜。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。
第一章 概述
1-1 系统要求简述
本系统主要为游戏者提供了娱乐,有益于为人们的日常生活带来快乐,为人们适当的减压,另外还可以提高游戏者的反应能力,和动手能力。
1-2应用语言概述
自从计算机问世以来,程序设计有了很大的进展。进入20世纪80年代,出现了一种新的程序设计方法——面向对象的程序设计(Object Oriented Progamming),简称OOP。面向对象的程序设计的特性,为程序设计人员提供了分析和解决问题的一种全新的方法。C++语言是70年代出现的一种非常卓越的程度设计语言,是由贝尔实验室的Dennis Ritchie 设计的一个通用的面向对象的程序设计语言。C++语言具有丰富的数据类型和结构化设计所需要的语句。C++语言的特点是效率高、功能强、简洁灵活。C++语言所具有的地址操作和位操作,是它在一定程度上具有了低级语言的特性,因而可以在相当大的程度上,代替设计难度较大的汇编语言。目前国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件程序功能设计思想
图2-1 游戏的实现
?
先看上图,玩过五子棋的人一眼就能看出这才是一场真正的战斗!(至少它不允许你随便下棋。)
那么,我们该如何实现?
其实,只是在原来的基础上,把其中一个人用计算机代替而已。也就是说,我们只要在原来的基础上,加上计算机的下棋算法就好了。
而计算机下棋的算法,正是一个程序的重点和难点。这里先介绍一下:
计算机是没有头脑的,但是,计算机必须下棋。那么,它该怎么办呢?我们必须自己编程序,“教”计算机下棋。然而,我们是否只是让计算机随便在棋盘上面放一颗棋子呢?事情并不是这么简单。计算机要下的那个位置,必定是它认为最好的!当然,这里的最好是程序员给予计算机的,是计算机算法的体现。
最好的位置,人都难以保证!
但是,计算机可以。这正是计算机能够在我们这个社会迅速发展的一个重要原因。当然,计算机的可以是建立在人的程序的基础上的。计算机的会是依赖于它的速度,人所不能及的速度。
上面说过,为什么要把数组的值赋值为1和-1,而不是0,1或者其它的数字呢?这里就涉及到数字的妙用。前面说了,五个连续棋子的值相加,如果绝对值是五,则不是五个棋子同色,应该结束游戏。那么,如果绝对值不是五呢?它就没有意义了吗?不是!不但不是,而是它有着更重要的意义。它关系到我们这个程序的几乎全部的算法。下面细说(数字是表示绝对值的):
?
4: 表示五个棋子中有一个空位置和四个同色的棋子。
3: 表示五个棋子中有两个空位置和三个同色的棋子;
也表示五个棋子中有四个同色棋子和一个异色棋子。
注意:此时没有空位置,可以不考虑。
2: 表示五个棋子中有三个空位置和两个同色棋子;
也表示五个棋子中一个空位置和三个同色棋子和一个异色棋子;
1、0: 由于出现1和0的机会太少(除了开始的时候),我们不必多加考虑。但是,因为刚才对方下棋的对方必定有一定的危险,我们只需要在刚刚下棋的附近找一个空位置下棋就可以了。
第三章 五子棋人机对战程序设计
3-1主菜单设置
对菜单进行设置,游戏中分别添加开始,打开,退出和保存,其中开始中又包括人对人和人对机两项,并且对他们分别关联和做相应的消息映射。
图3-1 游戏菜单
从上面图中,我们可以看到,工具栏变了。因此我们也可以想到菜单也应该变了。它们的修改如下:
?
修改菜单:
?
删除菜单项 开始:ID_START
添加菜单项 人对人游戏:ID_PLAYER
人对机游戏:ID_CPMPUTER
?
修改工具栏:
?
删除原来的按扭 对应ID:ID_START
添加两个新按扭 对应ID:ID_PLAYER ID_CPMPUTER
?
?3-2关键模块介绍
3-2-1??? 变量和函数
?
在
显示全部