1 / 12
文档名称:

五子棋人工智能算法及其实现.doc

格式:doc   页数:12
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

五子棋人工智能算法及其实现.doc

上传人:janny 2011/5/12 文件大小:0 KB

下载得到文件列表

五子棋人工智能算法及其实现.doc

文档介绍

文档介绍:五子棋人工智能算法及其实现
摘要:
五子棋游戏以其优秀的人工智能深受广大玩家的喜爱,而对于初步探究人工智能的编程爱好者来说,编制五子棋程序因其规则简单而大受欢迎,然而它却要求程序员对五子棋规则有相当深入的了解。程序员考虑得越周到,其五子棋程序就越智能。
五子棋游戏软件设计的主要内容是:根据五子棋的基本规则,要让电脑知道该在哪一点下子,就要根据盘面的形势,为每一个可能落子的点分别计算其重要程度,也就是该点的分值,然后通览全盘随机选出数值最大的一点,因为有时候分值最大的一点可能不止一个,计算机随机选择分值最大的一点,可以保证它在每盘棋中选择的落子点的位置有所不同,因此玩家不会用同一种棋局反复赢计算机。
本文论述了采用数值搜索法的人机对弈五子棋程序的分析与设计,并采用面向对象的开发工具VC++来具体实现。
关键词:五子棋,AI,VC++,面向对象
前言
曾几何,游戏成为千万家长心中恶魔!千万人欲食之而后快!无法否认,游戏,特别是网游带来了太多不健康的负面影响。最厉害的是沉迷于其中,它使无数的人,尤其是青少年浪费了金钱,更浪费了自己宝贵的时间,致使游戏影响到正常的生活。对于关心网迷的我,也曾听说过有人因盗窃他人游戏物品而被打的血流不止;也曾和无数少年一样,午夜依旧留恋在网吧里面;也会因此和家人、老师闹的不开心。事实上,这不是游戏的错,也不是游戏代理商的错,这是玩家的错,是玩家的心态问题,游戏就像是一个清水,你放点墨汁就是黑,你放点丹朱就是红。事实上,游戏的解除疲劳的作用非常明显,我写这个程序就是为广大没联上网的朋友娱乐奉献绵薄之力。对于五子棋的对战程序,互联网上有不少。例如,腾讯的QQ游戏、联众游戏等。但是这些多是人和人的对战,缺少人和计算机对战的。开发人机对战,有利于我们更加深入了解人工智能的意义。以及对算法的研究。
正文
为什么要开发一个五子棋人机对战程序?
随着个人计算机的普遍,越来越多的人和家庭有计算机了。对于任何一个计算机使用者来说,游戏是必不可少的,它不紧可以益智,还可以使人放松。而五子棋人机对战程序就是这样一个游戏。
开发一个人机对战游戏有什么现实意义?
虽然网上的五子棋程序很多,但是大多没有人工智能的人人对战,对于没有入网的计算机,这个程序将会成为他的解除疲劳,轻松娱乐的好游戏。通过对该游戏的研究,加深对人工智能的认识和对算法的研究。
为什么要选用Visual c++ ?
Visual c++ ,是一种面向对象的程序设计工具。Vc包含大量的控件,这些控件可用于界面设计和实现各种功能,从而大大减少程序员的工作量,同时也简化了工作截面的设计过程,从而提高程序的实用性和可靠性。
主程序设计过程概要
启动Visual C++ 选择新建MFC AppWizard(exe)工程并将工程命名为chess。
选择基于对话框的运用程序类型,点Finish.
在resourceview视图中,新建一个菜单栏并将菜单栏的ID命名为IDR_MAINMENU

在resourceview视图,插入Bitmap并将图片与IDB名字一一对应
将DIALOG中的IDD_ABOUTBOX设置成
现在我们将切换到classview视图,往程序中添加代码了。
主程序设计算法概要
在本次“五子棋“程序的编写中,只编写了人机对弈部分,运用了博弈树进行搜索,在选取最优的走步时使用极大极小分析法,考虑到搜索的时间复杂度和空间复杂度,在程序中只进行了2步搜索,即计算机在考虑下一步的走法时,只对玩家进行一步的推测。(程序中的棋盘规格为15*15)
下面对具体做法进行描述:
1. 数据结构定义:
棋盘定义:int board[15][15];
在15*15的棋盘上,获胜的情况总共有572种,
在一场五子棋的游戏中,计算机必须要知道有那些的获胜组合,因此我们必须求得获胜组合的总数。我们假定当前的棋盘为15*15。
(1)计算水平方向的获胜组合数,每一列的获胜组合是:11,共15列,所以水平方向的获胜组合数为:11*15=165
(2)计算垂直方向的获胜组合总数,每一行的获胜组合是:11,共15行,则垂直方向的获胜组合数为:11*15=165
(3)计算正对角线方向的获胜组合总数,正对角线上的获胜组合总数为11+(10+9+……+2+1)*2=121
(4)计算反对角线方向的获胜组合总数,反对角线上的获胜组合总数为11+(10+9+……+2+1)*2=121,这样所有的获胜组合数为:165+165+121+121=572
计算机和玩家的获胜组合情况bool ctable[15][15][572],
bool ptable[15

最近更新

2023年内蒙古能源职业学院单招职业技能考试题.. 40页

2023年包头钢铁职业技术学院单招职业技能考试.. 39页

2023年南京交通职业技术学院单招职业适应性测.. 41页

2026年免费公路工程劳务合同 45页

2023年南昌健康职业技术学院单招职业适应性考.. 40页

2023年南通科技职业学院单招职业技能测试题库.. 40页

2023年博尔塔拉职业技术学院单招职业倾向性测.. 40页

2023年厦门软件职业技术学院单招职业适应性考.. 39页

2026年元旦节手抄报简单漂亮一等奖 3页

2023年吉林城市职业技术学院单招职业技能考试.. 39页

2023年吉林省长春市单招职业倾向性测试题库最.. 39页

2023年呼和浩特职业学院单招职业技能考试题库.. 38页

2023年哈尔滨城市职业学院单招职业倾向性测试.. 39页

2023年唐山职业技术学院单招职业技能测试题库.. 39页

2023年四川商务职业学院单招职业技能测试题库.. 40页

2026年元宵节的作文怎么写怎么写 11页

2026年元宵节汤圆相关作文 4页

2023年四川职业技术学院单招职业倾向性测试题.. 40页

2026年元宵节学生主题小作文 11页

2023年大连枫叶职业技术学院单招综合素质考试.. 40页

2023年天府新区信息职业学院单招职业技能考试.. 40页

2023年天津公安警官职业学院单招职业适应性考.. 40页

2023年天津财经大学珠江学院单招职业倾向性考.. 41页

2025年国家开放大学《建筑力学》章节测试参考.. 13页

【人教版英语字帖】七年级下册单词表衡水体字.. 42页

国开《建筑力学》期末机考答案 15页

介绍医院门诊ppt 28页

农村人才流失国外研究报告 2页

栏杆计算书 2页

黄酒评分、扣分标准表(共1页) 1页