参考文章: 【Cocos Creator 实战教程(1)】——人机对战五子棋(节点事件相关)
源码: goBang
思考一:作为对手的系统用什么算法下棋?
估值函数、搜索算法和胜负判断等
博弈算法,在极大极小值搜索中应用alpha-beta剪枝
智能五子棋博弈程序的核心算法
智能五子棋中的算法研究
人机版五子棋两种算法概述
思考二:人机博弈的要点
1.棋局的状态能够在机器中表示出来,并能让程序知道当时的博弈状态
2.合法的走法规则如何在机器中实现,以便不让机器随便乱走而有失公平
3.如何让机器从所有的合法走法中选择最佳的走法
4.一种判断博弈状态优劣的方法,并能让机器能够做出智能的选择
5.一个显示博弈状态的界面,有了这样的界面程序才能用的起来而有意义
思考三:五子棋下棋规矩
五子棋对局,执行黑方指定开局、三手可交换、五手两打的规定。
整个对局过程中黑方有禁手,白方无禁手。
黑方禁手有三三禁手、四四禁手和长连禁手三种
思考四:人机下棋逻辑
系统先下,黑棋落子,交换下子顺序
玩家下,监测胜负(无胜负,交换下子顺序)
系统下(五元组中找最优位置),监测胜负(无胜负,交换下子顺序)
。。。
直到分出胜负(这里未考虑平局)
出现提示窗,告知玩家战局结果,同时可选择“返回菜单”或“再来一局”
具体实现:涉及知识点
官方文档--预制资源
将其改名为Chess拖入下面assets文件夹使其成为预制资源
1.在canvas节点上挂载Menu脚本组件
2.在按钮事件中,拖拽和选择相应的Target,Component和Handler
初始化棋子节点断点截图
系统为黑棋的评分表:
找最优位置下子
个人想法
这是我学习五子棋游戏开发的记录,后续还会写其他游戏开发,加油!
案例研究 囚犯两难处境的比赛假想你正与被关在另一个屋子里的“嫌疑”人进行囚犯两难处境的博弈。而且,再设想这种博弈不是进行一次而是多次。你博弈最后的得分是你被监禁的总年数。你希望使这种得分尽可能地少。你应该用什么战略?你应该从坦白还是保持沉默开始?另一个参与者的行动会如何影响你以后的坦白决策?
多次的囚犯两难处境是极为复杂的博弈。为了鼓励合作,参与者应该相互惩罚不合作行为。但以前描述的杰克和吉尔的水卡特尔的战略——只要另一方违约,一方就永远违约——得不到宽恕。在反复许多次的博弈中,在不合作时期之后,允许参与者回到合作结果的战略,可能是较合人意的。
为了说明哪一种战略最好,政治学家罗伯特?阿克塞尔罗德(Robert Axelrod)进行了一场比赛。人们通过输人为反复进行囚犯的两难处境而设计的电脑程序进入比赛。每个进行博弈的程序都对应于所有其他程序。得到狱中总年数最少的程序的是“赢家”。
赢家结果是被称为一报还一报的简单战略。根据一报还一报,参与者应该从合作开始,然后上一次另一个参与者怎么作自己也怎么做。因此,一报还一报参与者要一直合作到另一方违约时为止;他违约到另一方重新合作时为止。换句话说,这种战略从友好开始,惩罚不友好的参与者,而且,如果对方改变就给予原谅。令阿克塞尔罗德惊讶的是,这种简单的战略比人们输人的所有较复杂的战略都好。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)