欢迎来到天天文库
浏览记录
ID:5184290
大小:527.30 KB
页数:20页
时间:2017-12-05
《人工智能实验报告:井字棋》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、人工智能实验报告姓名:学号:院系:类别:科目:人工智能时间:2017.01.04目录一、实验及其界面显示11.一字琪玩法介绍12.一字棋程序所用软件13.实验调试24.运行程序25.可能出现的运行结果:4二、程序分析51.checkWin函数52.Search函数53.Checkwinning函数64.Man函数65.计算机落子位置76.Display函数87.main函数8三、针对玩家赢的情况对此程序进行分析:8四、实验心得10五、附源代码:10一、实验及其界面显示1.一字琪玩法介绍一字棋由电脑和人轮流来下,
2、分别用“X”和“O”来代替自身的棋子(O表示电脑落子位置,X表示人落子位置)。棋盘分9个格,双方可以在轮到自己下的时候,可以用棋子占领其中一个空的格子。如果双方中有一方的棋子可以连成一条直线,则这一方判胜,对方判负。当所有的格子都被占领,但双方都无法使棋子连成一条直线的话,则判和棋。此程序1-9分别表示棋盘上的不同位置,如下图所示:1234567892.一字棋程序所用软件软件名称:Dev-C++。由于我使用的电脑是win10系统,无法兼容vc6。所以使用Dev-C++这个可以与win10兼容的软件。Dev-C+
3、+是一个C&C++开发工具。软件界面如下所示:1.实验调试将程序进行调试,没有错误,然后运行。调试结果如下:2.运行程序运行程序,有两种选择:人先走,和电脑先走。显示界面如下:输入数字1:输入数字5(表示走在中间位置):输入数字3:输入数字4:输入数字2:输入数字9:1.可能出现的运行结果:通过验证,发现此程序可能出现三种结果:这局是平局、孙伟输了、恭喜孙伟赢了。还可以终止此场游戏,但是玩家孙伟赢了,和预期有所出入,后面将具体分析。下图是各种情况出现的截图:一、程序分析1.checkWin函数应用程序主要包含c
4、heckWin函数,用来判断胜负,列出了一字棋可以赢的8种可能;2.Search函数Search函数主要作为估价函数,主要用于计算机落棋时来判断落子位置的。所有的估值都是根据一字棋可能赢的8种情况来的。对于计算机可以落子的每一种情况进行判断,所得到的的最大值,即计算机应该落子的位置。例如:若果计算机先走,则返回的f值如下表所示:落子位置123456789返回的f值323242323从上表可以看出当落子位置为中间位置时,返回的f值最大为4,所以计算机会选择位置5落子。3.Checkwinning函数用来确定是否已
5、经有两点成线,返回成线的位置。4.Man函数表示玩家落子位置5.计算机落子位置通过Search函数的值以及Checkwinning函数来确定落子位置。Checkwinning函数的优先级高于Search函数。6.Display函数用来显示棋盘的落子位置。7.main函数主函数main函数,通过调用其它函数实现程序本身的功能。一、针对玩家赢的情况对此程序进行分析:以下这种情况是玩家赢,并且所有类似的走法都是玩家赢。运行如下:例如下面这种情况,当玩家先走4时,计算机优先走5。当玩家再走的位置为3时,计算机可以走的位
6、置只有1,2,6,7,8,9,四个位置。但是计算机选择的位置是9,为什么计算机没有选择走位置1?通过对程序的反复校核和思考。终于找到了答案。Checkwinning函数在返回f值之前并不能预测玩家下一步的位置,通过目前棋子的位置也不能满足Checkwinning函数的条件。因此执行Search函数。当玩家再走的位置为3时,计算机可以走的位置只有1,2,6,7,8,9,四个位置。此时各个位置返回的f值如下:落子位置126789返回的f值777888通过比较可以发现:7,8,9三个位置的f值相同且均为最大值。将此三
7、个位置通过Checkwinning函数,可以判断出落子位置是9时,计算机才有赢的可能性,所以选择了9。一、实验心得通过这次实验发现人工智能是一个非常有意思的科学。并且通过自己的不断尝试与努力,终于将程序运行出来,并且对运行的结果进行了分析。感觉非常有意义,学到了很多,这次实验使我受益匪浅。在此感谢老师的辛苦教学及精心指导!二、附源代码:#include#include#include#include#defineMAX1000/*定义最大
8、值为1000*/#defineMIN-1000/*最小值为-1000*/#defineNONE0/*如果搜索不到结果,结果NONE*/#defineDRAW1/*定义平局DRAW为1*/#defineC_WIN2/*电脑赢为2*/#defineM_WIN3/*人赢为3*/#defineQUIT4/*放弃为4*/#defineMAN-1/*人用-1表示*/#defineCOM1/*电脑用
此文档下载收益归作者所有