一字棋实验报告即程序代码

一字棋实验报告即程序代码

ID:6375365

大小:200.50 KB

页数:17页

时间:2018-01-12

一字棋实验报告即程序代码_第1页
一字棋实验报告即程序代码_第2页
一字棋实验报告即程序代码_第3页
一字棋实验报告即程序代码_第4页
一字棋实验报告即程序代码_第5页
资源描述:

《一字棋实验报告即程序代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一字棋实验报告题目:一字棋学号:姓名:专业:教师:XXXX大学计算机科学与技术学院摘要:本实验的思想有别于其他实验,程序实现起来相对简单。在人机对垒中,分别编写了计算机走步Mac函数,人走步User函数,评分value函数,判定输赢CheckWin函数,以及打印PrintQP函数和主函数。本实验的创新点主要集中在Mac函数和value函数。计算机在走步之前先将当前棋盘复制给临时棋盘,在此我定义了两个临时棋盘。在临时棋盘1中计算机试探性地走了一步,相应地在临时棋盘2中的相同位置计算机帮人走了一步,接下来分别对两个临时棋盘调用C

2、heckWin函数,根据返回的结果分别选择性地记录该走步的坐标位置。最后计算机再将临时棋盘1送入value函数,并记录评分。重置临时棋盘1和2,依次对所有空缺位置进行试探。根据返回的结果选择合适的坐标位置。而value函数实现起来相对比较简单,简化了极大极小分析法。返回的值等于所有空格上都放上计算机的棋子后,计算机的三个棋子所组成的行、列及对角线的总数减去所有空格上都放上人的棋子后,人的三个棋子所组成的行、列及对角线的总数。而在机机对垒中的Mac1函数和Mac2函数比较相似,其他函数类似。关键词:极大极小分析法临时棋盘试探评

3、价一、一字棋游戏的文字描述“一字棋”游戏(又叫“三字棋”或“井字棋”),是一款十分经典的益智小游戏。游戏双方在一个3*3的格子上依次下入自己的棋子,任何一方首先三子连成一线即获胜利,游戏结束。二、一字棋对垒过程计算机描述和实现首先我定义一个3*3的二维数组,作为一字棋的棋盘。1、主函数main程序输出当前棋盘并提示判断是否玩家先走步。然后玩家电脑依次走步,当当前棋盘能够判断输赢时,游戏结束,否则直到棋盘下满,游戏结束。1、打印函数PrintQP打印二维数组,即当前棋盘。2、玩家走步函数User实现玩家的走步,并判断玩家的走步

4、是否有误,返回结果。3、计算机走步函数Mac该函数是整个程序实现智能的关键所在,函数中定义两个临时棋盘,一个是给计算机试探走步使用,另一个是计算机替玩家走步使用,并结合其他的判断语句和评价函数value,得出一个最佳的走步坐标,并实现。4、评价函数valueValue函数采用极大极小函数的思想,并做了适当的简化。该函数对当前棋盘直接计算val的值。Val的值等于所有空格上都放上计算机的棋子后,计算机的三个棋子所组成的行、列及对角线的总数减去所有空格上都放上人的棋子后,人的三个棋子所组成的行、列及对角线的总数。返回该值。5、判

5、定输赢函数CheckWin因为每次导致输赢的只会是当前放置的棋子,输赢算法中只需从当前点开始扫描判断是否已经形成三子。对于这个子的八个方向判断是否已经形成三子。如果有,则说明有一方胜利,如果没有则继续搜索,直到有一方胜利或者搜索完整个棋盘。三、实例本实验有人机对垒和机机对垒。1、人机对垒:2、机机对垒:四、尝试考虑五子棋的实现五子棋和一字棋在性质上挺相似的,只是将棋盘扩大,棋子的连线增加到5个。但五子棋所考虑的情况将更加复杂,五子棋的棋盘不在局限在5*5中,对智能的要求也是非常之高。五、体会本次实验在对极大极小分析法理解的基

6、础之上,结合自己的一些想法编写而成,在程序实现初期,出现了很多BUG,例如计算机不能准确地判断对自己构成危险的走步,还有就是计算机在可以获胜情况下,没有走对棋子等等。还好这些问题在接下来对程序的不断完善中得以解决。六、参考文献七、程序源代码见附件。#includeintQP[3][3];voidPrintQP(){for(inti=0;i<3;i++){for(intj=0;j<3;j++)cout<

7、){for(inti=0;i<3;i++){if((b[i][0]==1&&b[i][1]==1&&b[i][2]==1)

8、

9、(b[0][i]==1&&b[1][i]==1&&b[2][i]==1)){return1;}if((b[i][0]==-1&&b[i][1]==-1&&b[i][2]==-1)

10、

11、(b[0][i]==-1&&b[1][i]==-1&&b[2][i]==-1)){return-1;}}if((b[0][0]==1&&b[1][1]==1&&b[2][2]==1)

12、

13、(b[2][0]==1&&b[1][

14、1]==1&&b[0][2]==1)){return1;}if((b[0][0]==-1&&b[1][1]==-1&&b[2][2]==-1)

15、

16、(b[2][0]==-1&&b[1][1]==-1&&b[0][2]==-1)){return-1;}return0;}intvalue(int

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。