当前位置:首页 > 游戏 >

五子棋游戏最简单的玩法(五子棋怎么玩得最简单)

来源:原点资讯(www.yd166.com)时间:2023-05-18 22:08:45作者:YD166手机阅读>>

  1. 左斜线情况 - 此时白子获胜

五子棋游戏最简单的玩法,五子棋怎么玩得最简单(5)

  1. 右斜线情况 - 此时黑子获胜

五子棋游戏最简单的玩法,五子棋怎么玩得最简单(6)

否则,黑白双方打成平手(即平局)。

项目的难点

1. 将 canvas 上绘制的棋盘和矩阵一一对应

五子棋游戏最简单的玩法,五子棋怎么玩得最简单(7)

体验下代码你就明白了:

// 监听鼠标点击棋盘的位置 listenDownChessman() { this.checkerboardDom.onclick = event => { let { offsetX: x, offsetY: y } = event; const { width, height } = this.lattice; x = Math.round((x - 15) / width); y = Math.round((y - 15) / height); if(this.checkerboardMatrix[x][y] !== undefined && Object.is(this.checkerboardMatrix[x][y], 0)) { this.checkerboardMatrix[x][y] = this.role; // 刻画棋子 this.drawChessman({ x, y }, Object.is(this.role, EnumRoles.BLACK)); this.role = Object.is(this.role, EnumRoles.BLACK) ? EnumRoles.WHITE : EnumRoles.BLACK; // 设置当前执棋 if(!this.win) { // 游戏中 this.setCurrentRole(); } else { // 游戏结束 Object.is(this.role, EnumRoles.BLACK) ? this.currentRoleDom.setAttribute("class", "chessman win-white") : this.currentRoleDom.setAttribute("class", "chessman win-black") this.message = '赢得本场胜利' this.setResultMsgHint(); } } } } 复制代码

我们需要获取 canvas 上相对原点(左上角)的偏移值,计算出在矩阵上对应的位置。然后判断该位置是否已经落子,如果没有落子,则进行棋子的绘制。

2. 判断输赢

在上面获胜情况中我们已经了解。下面我们看看代码实现:

/* * @method gameReferee 游戏裁判 * @param coordinate 坐标 (x, y) * @paran role 角色 */ gameReferee(coordinate, role) { const { x, y } = coordinate; if( x === undefined || y === undefined || role === undefined) return; // 连*的次数 let countContinuous = 0; // x 轴的情况 const XContinuous = this.checkerboardMatrix.map(x => x[y]); // y 轴的情况 const YContinuous = this.checkerboardMatrix[x]; const S1Continuous = []; const S2Continuous = []; this.checkerboardMatrix.forEach((_x,i) => { // 左斜线 const S1Item = _x[y - (x - i)]; if(S1Item !== undefined){ S1Continuous.push(S1Item); } // 右斜线 const S2Item = _x[y (x - i)]; if(S2Item !== undefined) { S2Continuous.push(S2Item); } }); // 当前落棋点所在的X轴/Y轴/交叉斜轴,只要有能连起来的5个子的角色即有胜者 [XContinuous, YContinuous, S1Continuous, S2Continuous].forEach(axis => { if(axis.some((x, i) => axis[i] !== 0 && axis[i - 2] === axis[i - 1] && axis[i - 1] === axis[i] && axis[i] === axis[i 1] && axis[i 1] === axis[i 2])) { countContinuous } }); if(countContinuous) { this.win = true; this.checkerboardDom.onclick = null; // 游戏结束,不允许点击 } } 复制代码

上面代码的注释已经讲解得很清楚了。简单来说,我们就是将二维数组分成四种情况处理,将其形成四个一维数组,再对四个一维数组进行判断,如果它们中有连续 5 个相同的数值,则可判定输赢。

比如,在 15 * 15 的棋盘中,某次落棋后,可得:

XContinuous = [0, 1, 2, 2, 2, 2, 2, 0, 2, 1, 0, 1, 1, 0, 0] 复制代码

0 代表空, 1 代表黑子,2 代表白子

这里 XContinuous 横轴中就有连续五个白子,则白方获胜。

体验地址:

赠人玫瑰,手留花香。俺不要玫瑰,只要读者的一个举手之劳的赞~ 逃:)

上一页12末页

栏目热文

五子棋游戏大全和玩法(旋转五子棋游戏终极玩法)

五子棋游戏大全和玩法(旋转五子棋游戏终极玩法)

五子棋五子棋是一种益智类的竞技体育,下五子棋有利于人的智力发展。在一个棋盘上,对战双方分别持白子和黑子。谁先用自己的棋子...

2023-05-18 22:15:40查看全文 >>

五子棋拓展游戏规则(五子棋的游戏规则六个棋连在一起)

五子棋拓展游戏规则(五子棋的游戏规则六个棋连在一起)

什么?团建暖场游戏你还在捏捏前面人的背,掐掐后面人的腰?拜托,看图猜成语过时了,这几个团建游戏两个字”好玩”,需要的收藏...

2023-05-18 22:36:45查看全文 >>

五子棋游戏套路(五子棋游戏的说明)

五子棋游戏套路(五子棋游戏的说明)

许多小伙伴喜欢棋牌游戏比如象棋、围棋、扑克…当你和对手厮杀的昏天黑地时有没有想过这样一个问题:这些游戏有必胜策略吗?如果...

2023-05-18 22:40:11查看全文 >>

五子棋游戏的规则和玩法(五子棋游戏必胜方法大全)

五子棋游戏的规则和玩法(五子棋游戏必胜方法大全)

五子棋,规则如名,对局双方各执黑白棋子,空棋盘开局,交替下子,先形成五子连线者获胜。由于规则相对简单,下五子棋成了大众在...

2023-05-18 22:39:15查看全文 >>

五子棋游戏大全最新(五子棋必胜26阵法图解)

五子棋游戏大全最新(五子棋必胜26阵法图解)

相信每一位经常看游戏直播的观众都知道,在大部分电竞类游戏的高端局排位时间都比较漫长的情况下,几乎所有的技术流主播,在等待...

2023-05-18 22:04:04查看全文 >>

五子棋趣味玩法游戏(五子棋游戏玩法规则)

五子棋趣味玩法游戏(五子棋游戏玩法规则)

我下得最多的棋,当属五子棋。最近在微信小游戏中,玩得比较频繁。总共已对弈了300多盘,累计胜率为67%左右。依稀记得我还...

2023-05-18 22:07:08查看全文 >>

经典五子棋单机版(无需联网的单机五子棋)

经典五子棋单机版(无需联网的单机五子棋)

上一篇文章,使用Java写了一个控制台的五子棋,玩起来不是很友好,这一篇文章把代码做了优化,同样是一个Java文件,单机...

2023-05-18 22:40:01查看全文 >>

天翼高清机顶盒怎么打开u盘(天翼高清机顶盒怎么连接电视)

天翼高清机顶盒怎么打开u盘(天翼高清机顶盒怎么连接电视)

作为移动存储设备,U盘凭借其小巧便携的特性受到了众多上班族与学生们的青睐。如今的智能设备来说,U盘接口早已变成了必备的,...

2023-05-18 22:12:05查看全文 >>

天翼高清机顶盒怎么申请(天翼高清机顶盒怎么激活)

天翼高清机顶盒怎么申请(天翼高清机顶盒怎么激活)

你花大价钱买了4K电视,却用它来看普通高清内容你用上了最新最快的智能手机,却在忍受电视操作的卡顿你时刻担心小孩看电视会近...

2023-05-18 22:41:21查看全文 >>

天翼高清机顶盒怎么进不去(天翼机顶盒打不开黑屏怎么办)

天翼高清机顶盒怎么进不去(天翼机顶盒打不开黑屏怎么办)

周口生活网 发表 中国电信高清电视机顶盒错误代码和处理方法,...

2023-05-18 22:21:06查看全文 >>

文档排行