- 2
- 0
- 约1.24万字
- 约 26页
- 2023-03-30 发布于浙江
- 举报
五子棋人机博弈实验报告
目 录
一(课程设计目的……………………………………… 2 二(课程设计要求……………………………………… 2 三(课程设计内容……………………………………… 2 四(课程设计思想……………………………………… 2 五(系统实现…………………………………………… 2
设计平台……………………………………… 2
数据结构设计………………………………… 3
程序流程图设计……………………………… 3
主要算法设计………………………………… 4
程序调试及运行结果………………………… 4 六(课程设计总结……………………………………… 5 七(参考资料…………………………………………… 6 八(附录:五子棋博弈算法源代码…………………… 7
1
一( 课程设计目的
通过上学期学习的《人工智能》学科,运用推理技术、搜索方法和决策
规划和博弈树设计五子棋人机博弈系统,以此进一步深化对理论知识技术的
了解,培养学生编程能力以及实践水平。
二(课程设计要求
通过本次课程设计要求学生掌握以下内容:
1.深入了解博弈树和alpha-beta剪枝算法。
2.设计出适合五子棋算法的启发式函数。
3.熟练掌握启发式的搜索方法。
三(课程设计内容
本系统实现的是五子棋博弈算法,运用java语言实现了图形用户界面,
方便用户使用。算法采用了博弈算法和启发式函数进行搜索,人机对弈可自
动判断输赢,结束后可重新开局。
四(课程设计思想
本系统实现的是五子棋博弈算法,为了方便用户的使用,采用的是java图形用户界面技术。为了记录棋盘的每一个下棋点,定义数组array[19][19]。并用shape[16][16][5]记录所有获胜的组合。首先由玩家落子,前两步电脑根据玩家的落子情况在附近随机落子,第三步电脑开始搜索,并根据玩家落子情况对棋盘进行全局搜索(Scan)并排序(Sort),并对每一个落子点进行打分并选择分值最大的点(Evaluate)落子,判断玩家或电脑是否获胜(Judge),一方获胜则结束。 五(系统实现
1.实验平台:
myeclipse 8.5
2
2.数据结构设计:
(1)int array[19][19]:记录棋盘的每一个下棋点
(2)int max_x:记录最大评估值的横坐标
int max_y:记录最大评估值的纵坐标
int max :记录最大评估值
(3)int shape[16][16][5]:记录所有获胜组合 3.程序流程图设计:
开始
玩家落子
是
玩家是否获胜
电脑对棋盘进行搜索,对每个点
打分,记录最大值及其位置
电脑选择分值最大的点落子 否
电脑是否获胜
是
是否重新开局
是
否
结束
3
4.主要算法设计:
(1)class ChessPad:绘制棋盘棋子,初始化棋盘,添加鼠标点击事件。
(2)class ChessPoint_black:黑棋下棋的走法和显示
(3)class ChessPoint_white:白棋下棋的走法和显示
(4)class Chess:棋盘属性的设置
(5)class Evaluate:对每一步可选择的方法进行打分,选择最大值,记录
坐标。
(6)class Scan:查看八个方向上相邻相同颜色棋子的个数。
(7)class Judge:判断是否有一方获得胜利。
(8)class AutoPlay:电脑的下棋走法,依据玩家当前的落子位置来判断
自己的走子位置。
5.运行结果:
(1)人机对弈,黑棋为人操作,白棋为计算机操作,人赢得胜利的页面截图如 下:
4
(2)人机对弈,黑棋为人操作,白棋为计算机操作,计算机赢得胜利的页面截图如下:
六(课程设计总结:
通过小组合作完成五子棋人机博弈系统,自己更透彻的了解
了上学期学习的《人工智能》教授的知识,可谓一大收获;同时
更强化了Visual C++的一些基本技术,捡回了选修课讲过的很多
相关知识,可谓是另一大收获。在对五子棋人机博弈的估值搜索
算法的设计上,采用博弈搜索的方法,采用静态估值函数对各节
点的代价进行估计,使算法达到最优。小组合作区别与自己独立
实验,此一形式,让我们扬长避短,体味到了团队合作的快乐~
5
七(参考资料:
[1] 蔡自兴(人工智能及其应用[M](北京:清华大学出版社,1999 [2] 王小春(游戏编程(人机博弈)[M](重庆:重庆大学出版社,2002 [3] 潘金贵,顾铁成,曾俭等编译(现代计算机常用数据结构和算法[M](南京:南京大学
出版社,1994
[4] 王永庆(人工智能原理与方法[M](西安:西安交通大学出版社,1998 [5] 林尧瑞,马少平(人工智能导论[M](北京:
原创力文档

文档评论(0)