五子棋实验报告.docx
- 文档编号:10314335
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:13
- 大小:106.84KB
五子棋实验报告.docx
《五子棋实验报告.docx》由会员分享,可在线阅读,更多相关《五子棋实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
五子棋实验报告
五子棋实验报告
一、实验目的和要求
一、能够用编程语言实现一个简单的五子棋程序
二、在实际系统中利用、实现人工智能的相关算法
3、进一步加深对人工智能算法的明白得
二、五子棋的大体常识与原理
一、五子棋的起源
五子棋,是一种两人对弈的纯策略型棋类游戏,亦称“串珠”、“连五子”;是中国民间超级熟知的一个古老棋种。
相传,它起源于四千连年前的尧帝时期,比围棋的历史还要悠长。
亦有传奇,五子棋最初流行于少数民族地域,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。
五子棋进展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为19X19,棋子放置于棋盘线交叉点上。
两人对局,各执一色,连番下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不中断的一排者为胜。
因为传统五子棋在落子后不能移动或拿掉,因此也能够用纸和笔来进行游戏。
二、五子棋的大体常识
与任何一种竞技棋一样,五子棋的每一局棋也分为三个时期:
开局,中局和残局。
五子棋的开始时期称为开局,或称布局。
其开局时期是十分短暂的,大约在七着与十几着之间。
在这一时期的争夺中,两边的布局,应付将对以后的输赢起着极为关键的作用。
在开局时期取得的形势好坏,主动与被动,先手与后手的好坏程度,往往直接阻碍中局的战斗。
因此踊跃处置好开局和开局向中局的过渡十分重要。
五子棋是从一至五,慢慢布子,进展连系,同时运用限制和反限制的聪慧,在连子的进程中为自己的棋子争得相对的主动权和优势,慢慢扩展优势,或从劣势转化为优势,击溃对方的防线,最后连五取胜或抓禁手取胜或迫使对方投子认负。
3、五子棋竞赛的相关规定
(1)职业连珠规那么
a.黑方先下子,白后下,从天元开始彼此顺序落子。
b.最先在棋盘横向、竖向、斜向形成持续的相同色五个棋子的一方为胜。
c.黑棋禁手判负,白棋无禁手。
黑棋禁手包括“三三”(包括“四三三”)、“四四”(包括“四四三”)、“长连”。
即黑棋只能以“四三”取胜。
有关术语说明请见图示说明。
d.如分不出输赢,那么定为平局。
对局中拔子、半途退场均判为负。
e.五连与禁手同时形成,判胜。
(2)竞赛中的规定和特例
a.对局开始前,两边猜子,大数减小数,单数互换,偶数不换。
b.白棋第一手(即盘面第二着棋)应在天元为界自己一侧布子,要紧以示尊重对方,以后两边可任意行子。
c.对局中两边应遵守“职业连珠五子棋规那么”,如显现争议,应由裁判判定。
d.对局中掉子(棋子掉落在棋盘上)的一方判负。
如遇推子或蹭子,以盘面第一落点为准。
用手将棋子扶正不算违规。
e.对局中应礼貌行棋,避免不正常声音、动作阻碍对方试探。
f..竞赛终止后,两边应将各自棋子放回原处。
g.对局中如黑方显现禁手,白方应当即指出禁手点,黑方即负。
如白方在黑方显现禁手后,又下一步白子,黑棋禁手那么不成立了。
h.竞赛对局时刻,两边别离为15分钟、1小时、2小时、5小时四个品级标准,超时判负。
(3)特殊规定
职业五子棋尽管对黑棋采取了各类限制,但黑子先行的优势仍然专门大。
因此,在高段位的职业竞赛中,又显现了三种特殊的规定。
a.指定打法:
是指竞赛两边依照约定好的开局进行对弈,由白棋先行。
b.三手可互换:
是指黑棋下盘面第3手棋后,白方在下第四手之前,如感觉黑方棋形无益于己方,可提出互换,即执白棋一方变成执黑棋一方,而黑方不能够不换。
c.五手两打法:
是指黑棋在下盘面上关键的第5手棋时,必需下两步棋,让白棋在这两步棋中拿掉一粒棋子,然后再继续对弈。
一样说来,白棋确信拿掉对白方不利的一点,而保留对黑方较为不利的那点让黑方行棋。
三、五子棋的系统设计
一、系统用例模型设计
五子棋系统应该具有选择玩家先落子仍是电脑先落子的功能,应该具有开始游戏和从头开始的功能,固然了,必需具有在玩家指定位置落子的功能。
以上描述,用用例图在图1中做进一步描述。
这部份功能,要紧通过界面与系统的交互来实现。
图1五子棋系统的玩家用例图
各个用例,简单描述如下:
●选择电脑先落子:
选择后,在游戏进程中,由电脑执黑子,先落子;玩家执白子,于电脑后落子;
●选择玩家先落子:
选择后,在游戏进程中,由玩家执黑子,先落子;电脑执白子,于玩家后落子;
●落子:
原那么上说,只要不违背禁手规那么,在玩家鼠标点击最近的落子点落子,可是在本系统中,简单起见,没有考虑禁手规那么;
●开始游戏:
选择后,依照设定的电脑仍是玩家先落子,开始游戏;
●从头开始:
在游戏途中,能够选择从头开始,中断游戏并从头开始游戏。
同时,五子棋系统本身应该具有棋盘绘制、棋势扫描、棋势排序、棋势评估、择位落子,和输赢判定的功能,尤其是关于棋势排序、棋势评估和择位落子,那个地址是表现五子棋系统人工智能(AI)的关键的地方。
以上描述,用用例图在图2中进一步描述。
图2五子棋系统的系统用例图
各个用例,简单描述如下:
●棋盘绘制:
绘制19*19的棋盘及相关按钮和选项,并负责电脑、玩家落子后棋子的具体绘制;
●棋势扫描:
扫描目前棋盘上的所有八个方向上的落子情形,获取整个对弈两边的棋势;
●棋势排序:
对获取的八个方向的棋势(事实上下合一,左右合一,左下右上合一,坐上右下合一,为四个方向),进行排序,便于进行棋势评估;
●棋势评估:
别离对电脑和玩家的棋势进行评估,量化棋势;
●择位落子:
比较电脑和玩家的棋势,假设有利于玩家,那么采取“守、堵”的策略,假设有利于电脑,那么采取“攻、走”的策略;
●输赢判定:
每次电脑或是玩家落子后,判定输赢情形,假设显现“五子连珠”,那么“连珠”一方取胜,另一方失败,游戏终止。
二、系统界面设计
为了实现玩家的用例所需要的功能,同时又便于利用,五子棋系统的界面设计得比较简单,如图3所示。
整体界面为一个19*19的棋盘,在f-0六、f-14、j-10、n-0六、n-14这五个位置画了一个小方块,以提示玩家棋盘的中央位置,便于把握有利位置落子。
在棋盘的右边是一些操纵和提示选项、按钮和对弈状态标签。
其中,选项有“我是老大我先来”和“让让电脑也无妨”两个。
选择前者,那么玩家先落子;选择后者,那么电脑先落子。
按钮有“人机对战,快冲啊”和“不行了?
那重来吧”两个。
单击前者,那么游戏开始;单击后者,那么中断游戏,从头开始。
标签有“就不告知你是谁赢了”和“就不告知你这是第几步”两个。
前者是在游戏分出输赢后,显示是黑方取胜仍是白方取胜;后者是在游戏进程中,不论是电脑落子仍是玩家落子,都提示此刻是第几步落子。
图3五子棋系统界面
3、系统模块设计
为了实现五子棋系统本身具有的功能,将系统分为这几个模块:
五子棋主模块、棋势扫描模块、棋势排序模块、棋势评估模块和随机落子模块。
其中,五子棋主模块实现棋盘绘制、输赢判定的功能,和对弈进程中对照两边棋势的择位落子模块。
棋势扫描模块、棋势排序模块、棋势评估模块别离实现棋势扫描、棋势排序、棋势评估的功能;而随机落子模块那么实此刻前两步棋势尚未形成时,电脑紧邻玩家落子位置随机择位落子的功能,是用例图中择位落子功能的一部份。
对应的,系统一共有五个类,别离对应五个模块;别离为:
五子棋主模块Gobang类、棋势扫描StatusScan类、棋势排序StatusSort类、棋势评估StatusEvaluation类,和随机落子RandomPlay类。
类图如图4所示。
其中Gobang类中的属性和方式并无完全列出,只列出了要紧的属性和方式;其余类大体列出了所有的属性和方式。
具体细节将在第四部份“五子棋的实现与测试”一节讨论,那个地址再也不赘述。
图4五子棋系统的类图
四、五子棋的实现与测试
一、Gobang类的实现
Gobang类是五子棋的核心类,棋盘绘制、棋子落子,响应事件的处置,游戏的操纵和模式设置,输赢判定,和对棋势扫描、排序、评估等的挪用都在那个地址实现。
Gobang类的类图如图5所示。
图5Gobang类类图
其中棋盘的绘制,有paint()和init()来实现,棋子落子由setQizi()来实现,响应事件的处置也在那个类中添加监视器并处置,而游戏的操纵和设置在Game_start()和Game_rastart()中实现,游戏输赢的判定由Judge()方式和四个判定不同方向上是不是五子连珠的Game_win_*()函数来实现。
而最为重要的棋势扫描、排序和评估,那么由其属性scanp、scanc、sort、evaluatep、evaluatec别离挪用它们的方式来实现。
随机落子由属性randomPlay挪用其方式实现。
二、StatusScan类的实现
StatusScan类通过扫描目前棋盘上的所有八个方向上的落子情形,获取整个对弈两边的棋势。
StatusScan类的类图如图6所示。
图6StatusScan类类图
其中三维数组shape为一个20*20*5的数组,用来存储所获取的整个对弈两边的棋势。
固然了,在实际实现中,实例化了两个StatusScan类的对象scanp和scanc,这两个对象别离用来存储玩家的棋势和电脑的棋势。
而statusScan()方式具体实现从棋盘上获取整个棋势的具体进程,参数chesspad存储棋盘上的详细落子情形,参数colour决定需要获取的是黑方的棋势仍是白方的棋势。
具体扫描时,关于棋盘(i,j)处,有上下、左右、左下右上、坐上右下八个方向,可是统计时,将上下、左右、左下右上、左上右下别聚散一,那么一共有四个结果,别离存储在shape[i][j][0]、shape[i][j][1]、shape[i][j][2]、shape[i][j][3]中。
3、StatusSort类的实现
StatusSort类对StatusScan类扫描取得的棋势进行排序,以便于做进一步的棋势评估。
StatusSort类的类图如图7所示。
图7StatusSort类类图
其中,StatusSort类只有一个方式statusSort(),参数shape即为StatusScan类扫描获取的棋势数据,该方式主若是对shape中的棋势数据进行排序,使得shape数组知足以下条件:
排序后的结果仍然存储在shape数组中。
4、StatusEvaluation类的实现
StatusEvaluate类对StatusSort类排序过的棋势进行评估,为对弈时电脑择位落子提供依据。
StatusEvaluate类的类图如图8所示。
图8StatusEvaluate类类图
其中,StatusEvaluate类也只有一个方式statusEvaluate(),参数shape即为StatusSort类排序后的棋势,该方式主若是依照棋盘上每一个位置(i,j)的棋势数据shap[i][j][0]、shap[i][j][1]、shap[i][j][2]和shap[i][j][3]的取值,计算该位置的棋势评估值,并保留在shap[i][j][4]中。
另外,还要比较每一个位置的棋势评估值,将最大的评估值记录在属性max中,相应的位置坐标记录在max_x和max_y中。
五、RandomPlay类的实现
RandomPlay类主若是在前两步,棋势尚未形成,在玩家落子后,电脑紧邻玩家落子位置,随机落子。
RandomPlay类的类图如图9所示。
图9RandomPlay类类图
其中,方式randomPlay()方式具体实现这一进程,属性chesspad存储目前棋盘上的落子情形,参数a、b即为玩家最近一次的落子位置。
randomPlay()方式通过检测随机数的值,别离在紧邻玩家落子(a,b)处的正上、正下、正左、正右、左下、右上、左上和右下八个位置中的一个位置落子,最终选取的电脑落子位置,存储在属性x、y当中。
六、五子棋系统的测试
运行系统后,选择“让让电脑也无妨”,单击“人机对战,快冲啊”,开始游戏。
游戏进程中,能够正确显示相关的游戏信息,如图10所示。
图10系统运行截图
从图中,能够看到“就不告知你是谁赢了”标签显示的输赢信息“五子连珠白棋赢了”;而“就不告知你这是第几步”标签显示进度信息“这是第13步”。
进一步生成了可执行文件五子棋.jar,如图11所示,可执行文件将与实验报告、源代码一并提交。
图11系统生成的可执行五子棋文件
五、分析与总结
通过五子棋实验,从分析、设计、编程、调试,到最后运行成功,自己取得了很多的锻炼。
*************************************
实验报告
实验名称:
实验3访问操纵
学员:
闫慧宁学号:
09060100
培育类型:
军人硕士研究生年级:
研一
专业:
运算机科学与技术所属学院:
运算机学院
指导教员:
任江春职称:
讲师
实验室:
103-南201实验日期:
2010春
国防科学技术大学训练部制
六、附录
附录1
在网上查阅资料时,看到那个帖子,作者将自己的五子棋心得以一种超级有趣的形式展现出来:
前序、四个对联、跋文;乐一乐的同时,也有不小的收成,一并附于此,作为五子棋实验的一个意外收成。
前序
区区字奴,小小网虫,痴四书,迷五子,乐此不疲。
于联众蒙诸友赐教,学得棋技少量,术语假设干,不胜心痒,试以韵笔题之,略有小得。
是以联句做文,集成发贴,唯愿感者留其言,评者留其论,亦酬伤神,亦慰呕心。
之一
黑子落,白子落,棋乐陶陶任蹉跎,胜,能如何?
败,能如何?
方寸纹枰自淡泊,心平气和。
先手措,后手措,棋道漫漫细求索,得,有什么?
失,有什么?
过去以后共斟酌,知足常乐。
横批:
以和为贵
之二
纵驰奔,横驰奔,各施韬略斗奇阵,连,可生根?
跳,可生根?
好坏一子变风云,三思谨慎。
阴线纹,阳线纹,各藏玄机备异军,冲,可细寻?
活,可细寻?
输赢一瞬转天地,五星怡神。
横批:
心正棋明
之三
直指路,斜指路,世事如棋万千途,求,是何必?
弃,是何必?
苦恼岁月忘沉浮,宝贵糊涂。
攻式促,守式促,人一辈子如棋无尽处,逞,几时悟?
馁,几时悟?
坎坷光阴等闲度,漫卷诗书。
横批:
宁静致远
之四
老棋迷,小棋迷,相欢一线牵万里,聚,谈何易?
散,谈何易?
网络现实两依依,保重友谊。
新棋友,旧棋友,三五知音遍神州,逢,曾记否?
别,曾记否?
游戏人一辈子两悠悠,真情永久。
横批:
乐在棋中
跋文
未虑平仄,难对词性,非诗非赋,亦联亦词,笔随心动,疏漏百出。
吾虽无才,但喜交雕文之友,亦拜一字之师,盼观添花妙笔,求闻回春妙方,可畅胸怀,可足生平。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)