利用开源HTML5引擎lufylegend.js结合javascript实现的五子棋人机对弈
前言 本文主要介绍利用开源引擎lufylegend.js开发基于Html5的游戏--五子棋,主要叙述其详细开发过程。游戏规则
玩过五子棋的都应该知道五子棋的规则,这里就简单介绍其规则。
1、传统五子棋的棋具与围棋大致相同,棋子分为黑白两色,棋盘为15×15,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。
2、由于传统五子棋具有不公平性,而现代五子棋禁手规则令一部分棋手望而怯步。于是产生了职业制传统五子棋,职业制传统五子棋虽然准备麻烦,但胜在简单公平,而且难度增加,久而习之,思维活跃。
规则如下:1、准备19×19棋盘两张。2、黑白子数目必须满足。3、第一回合先手只能下一手,其余回合可以下连续两手。4、后手每回合均可以下连续两手。5、每颗子所投的棋盘没有限制。6、只要任意一方在两个棋盘上且同一个回合上连为五子为胜。7、若任意一方在两个棋盘上且不同一个回合上连为五子为负。8、若任意一方在不足两个棋盘上且同一个回合上连为五子为负。综合效应“禁手”思维+“交换”思维+“井字游戏”原理=连珠如:RIF规则、Sakata规则、Yamaguchi规则Tarannikov规则等。为了方面起见,这里只考虑传统打法,也是大多数人喜欢的打法。用到的术语 活五:任意方向的相同颜色棋子连成5个棋子 活四:任意方向的相同颜色棋子连成4个棋子,且两边都没有其他棋子 冲四:任意方向的相同颜色棋子连成4个棋子,且一边没有其他棋子 活三:任意方向的相同颜色棋子连成3个棋子,且两边都没有其他棋子 死三:任意方向的相同颜色棋子连成3个棋子,且一边没有其他棋子 活二:任意方向的相同颜色棋子连成2个棋子,且两边都没有其他棋子 死二:任意方向的相同颜色棋子连成2个棋子,且一边没有其他棋子 单一:任意方向的相同颜色棋子连成1个棋子,且两边都没有其他棋子开发思路 好了,废话不多说,接下来就介绍一下开发思路,首先要明确,当玩家每下一个棋子的时候,如何能教会电脑下棋,也就是如何让电脑知道往哪个地方下子。这里就需要让电脑扫描整个棋盘,分析整个棋型,通过计算得出哪个地方最有可能赢,或者最有可能阻止玩家赢。那么,就需要给每个棋型拟定一个分数,每次玩家下子的时候,就扫描棋盘,给定棋盘每个位置空子(即没有棋子的位置)的分值,然后就下分值最高的那个点。 比如:如果这个地方如果电脑下子,可能构成活四,那么分数+5000,如果玩家可能构成活四,分数+2000。详细过程 我表达不是很好,说的很笼统,直接贴上代码吧。 初始化棋盘
好了,整个五子棋就开发完成了,有任何疑问,我们可以交流交流