- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
案例二十三 人机下棋问题_图文
案例二十三 人机下棋问题 本案例知识要点 数组的使用 类的设计及使用 人工智能问题的量化思想 一、案例需求 案例描述 设计一个简单的下棋游戏,游戏的规则是:在3?3的棋盘上,计算机为一方,人为一方,交替标记叉(X)和圆圈(O)。在行、列、对角线的方向上,先连成一条直线的一方为胜者。计算机可以动态地显示棋盘,给出提示信息和胜负判断,并允许用户选择是先手还是后手。 案例效果图 人机下棋案例效果如图所示。 人机下棋案例效果图 功能说明 显示棋盘,给出提示信息和胜负结果判断标准,允许用户选择是先手还是后手。 每一步都用图形化方式顺序输出。 直观地表示胜负结果。 二、案例分析 设计算机标记“X”,人标记“O”。计算机下时,应该考虑所有的空位置,并按照行、列和对角线计算每个空位的分值。在某行(列、对角线)上,按以下规则计分(其中“_”表示空格): 若已有“XX”,则加50分。 若已有“OO”,则加25分。 若已有“X_”,则加10分。 若已有“O_”,则加8分。 若已有“_ _”,则加4分。 根据上述的计分规则,计算机每次下棋时算出每个空位置的分数,从中选择最高分的位置画‘X’。如果某条行、列、对角线上画满了3个“X”,则计算机胜,否则人继续下棋。 人每走一步即判断行、列、对角线上是否画满了3个“O”,如画满了3个“O”,则人胜,否则计算机继续下棋。 如果棋盘布满了棋也未分出胜负,则和棋。 需要定义一个字符数组保存棋盘每次下完棋的状态。其中,“X”表示计算机下的棋,“O”表示人下的棋,数字“1”~“9”表示空位置。 还需要定义一个整型数组记录计算机下棋时每个空位置的分值。即如上所述的50、25、10、8、4分。 三、案例设计 1.类的设计 基于上述分析,本案例定义一个类CGame,用来处理相关的计算、打印等功能。主程序只是简单调用。 CGame类的设计如图所示。 (1)数据成员 char status[9]; 记录棋盘状态。 int score[9]; 记录空位置的分值。 int fail; fail为胜败标志,其中0表示和棋,1表示人赢,2 表示计算机赢。 counter; counter为步数。 (2)函数成员 Game(); 构造函数,初始化相关变量。 Print(); 打印棋盘。 int Cal(int i,int j); 计算某行的得分。 bool Judge(int i,int j,int k); 判断某条直线是否全为“O”。 Play(); 启动游戏运行。 2.主程序设计 主程序主要是调用了CGame类的成员函数Play()来实现游戏的,CGame.Play()函数的流程如图所示。 CGame.Play()函数的流程 四、案例实现 五、案例总结与提高 案例总结 该案例新颖的地方是巧妙地将智能判断的思考过程抽象出来,加以量化,这样计算机才能够进行处理。关于这种智能过程,读者可以参考人工智能方面的书籍。 案例提高 在全面理解的基础上,读者可以对本案例进行一些改动与提高。 改变棋盘的尺寸。改变后,计算机下棋时能够选择的空位置就更加多了。可以通过改进算法来达到计算机选择最优位置的目的。 改变下棋的规则。当棋盘变大时,胜利的规则不一定非要连成一条线的棋子个数等于棋盘尺寸,可以比棋盘的尺寸小。这样,设计分值时就需要考虑多种因素,除了计算机要将棋子尽量连成一条线外,还要考虑封住人的棋子连线。 第*页 共28页 目录 退出 目录 * 第*页 共28页 目录 退出 目录
文档评论(0)