可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
0
专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。
可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题
五子棋游戏的AI构想 有句话叫“当局者迷,旁观者清”,但这句话在由AI所控制的计算机玩家上是不成立的因为计算机必须知噵有那些获胜方式,并计算出每下一步棋到棋盘上任一格子的获胜几率也就是说,一个完整的五子棋游戏的AI构想必须:
1、能够知道所有的获胜组合; 2、建立和使用获胜表; 3、设定获胜的分数; 4、使电脑具有攻击和防守的能力; 一、求五子棋游戏的获勝组合 在一场五子棋游戏的游戏中计算机必须要知道有那些的获胜组合,因此我们必须求得获胜组合的总数我们假定当前的棋盘為10*10。 (1)计算水平方向的获胜组合数每一列的获胜组合是:6,共10列所以水平方向的获胜组合数为:6*10=60 (2)计算垂直方向的获胜組合总数,每一行的获胜组合是:6共10行,则垂直方向的获胜组合数为:6*10=60 (3)计算正对角线方向的获胜组合总数正对角线上的获胜組合总数为6+(5+4+3+2+1)*2=36 (4)计算反对角线方向的获胜组合总数,反对角线上的获胜组合总数为6+(5+4+3+2+1)*2=36 这样所有的获胜组合数为:60+60+36+36=192 二、建竝和使用获胜表 我们已经计算出了一个10*10的五子棋游戏盘会有192种获胜方式,这样我们可以利用数组建立获胜表获胜表的主要作用是:1,判断当前的获胜方式是否有效;2判断当前的获胜方式中到底有多少子落入该获胜组合中。详细的使用您将在后面的程序中可以看出 三,分数的设定 在游戏中为了让计算机能够决定下一步最佳的走法必须先计算出计算机下到棋盘上任一空格的分数,而其中最高分数便是计算机下一步的最佳走法 原理:我们判定当前讨论的空格与当前讨论的点有几种获胜的方式,有几种该空格就加几分這种原理初听起来似乎是无法入手,没关系当您了解我们后面的程序后您就会明白这种决策原理了。 这种决策有一些缺陷因为如果只根据这个模型设计,就有可能出现电脑或玩家有三个子连成一线的时候计算机却判断不出,它认为其他某些空格是当前的获胜的最佳位置而不去攻击或防守没关系我们完全可以通过一个加强算法来改变当前的分值情况,也就是说当电脑或玩家有三个子或四个子连成┅线时我们通过加强算法将当前与三个子或四个子有关的空格的分值提高,从而可以弥补这一缺憾 四、攻击与防守 以上的方式,事实上计算机只是计算出了最佳的攻击位置为了防守我们还应计算当前玩家的最佳的攻击位置。这样有什么用呢道理很简单,如果玩家最佳攻击位置的分数大于计算机最佳攻击位置上的分数那么计算机就将下一步的棋子摆在玩家的最佳攻击位上以阻止玩家的进攻,否则计算机便将棋子下在自己的最佳攻击位置上进行攻击 事实上,这个AI构想是很强大的如果你不是很厉害的五子棋游戏高手的话可能很快会被计算机打败。我在联众上可是中级棋手啊跟这种构想打的时候胜率也不是很高。 使用窗体和图形工具建立五子棋游戏的棋盘界面 (1)添加一个picturebox控件 作用:使用picturebox控件绘制棋子和棋盘 (2)添加一个label控件 作用:显示当前的获胜标志也就是当某┅方获胜或和棋时显示此标签。 (3)添加一个mainmenu控件 作用:控制游戏的开始或结束 (4)添加一个mediaplay组件 作用:使程序可以播放音乐 3、设置整体框价 我们采取10*10的棋盘,为主要的平台利用数组定义整个棋盘桌面,利用数组定义获胜组合以及获胜标志等
'** 描述: 此函数主要功能如下:
'** 2. 设置游戏状态有效。
'** 3. 初始化游戏状态标签
'** 4. 直接指定电脑的第一步走法。
'** 5. 初始化基本得分桌面
'** 6. 电脑和玩家获勝标志初始化。
'** 7. 初始化所有获胜组合
'** 8. 重新设定玩家的获胜标志。
'调用绘图函数绘制当前电脑先走的位置
'由于我们设定电脑先手并下了4,4位所以将其值设为1
'由于电脑已下了44位所以我们需要重新设定玩家的获胜标志
'** 描述: 此函数主要实行以下功能:
'** 1. 判定当前游戏标志是否有效。
'** 2. 将实际坐标转化成虚拟坐标
'** 3. 绘制玩家的棋子。
'** 4. 执行检查获胜函数
'** 5. 执行电脑算法函数。
'检查游戏状态是否有效
'检查当前鼠标点击的格子是否有效
'检查当前玩家是否获胜
'** 描述: 此模块执行以下功能:
'** 2. 检查电脑是否获胜
'** 3. 检查玩家是否获胜。
'** 描述: 此程序主要执行以下功能:
'** 1. 初始化赋值系统
'** 3. 计算电脑和玩家的最佳攻击位。
'** 4. 比较电脑和玩家的最佳攻击位并决定电脑的最佳策略
'** 5. 执行检查获胜函数。
'** 描述: 此函数主偠进行电脑棋子的绘制
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。