关系经济人类预测化学自然
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

五子棋两人对战

8月24日 先锋客投稿
  头条创作挑战赛
  banner
  这是一个关于五子棋实现的系列文,本文是第1篇。总共会分成两篇文章:五子棋JavaScript实现两人对战:讲解如何实现两人对战,当然你可以自己跟自己玩五子棋JavaScript实现人机对战:讲解如何实现人机对战,着重人机输赢算法
  当然,本文的两人对战,你找不到第二个玩伴的话,那你可以左手和右手玩功能概览棋盘大小自定义白棋先下不支持悔棋提示当前下棋方(黑子白子)输赢判断
  代码即文档,读者可在体验地址章节进入码上掘金大屏跟读代码,相信读者能有所收获。
  读者能来个点赞,那就是对笔者的最大肯定
  讲解
  我们制定简单的五子棋规则:在五子棋中,双方各执一个颜色的棋子,空盘开局,交替落子且每次只能落子一枚。如果同种颜色的棋子在横向、竖向或者斜线上有连续五个子,则该颜色棋子的一方获胜。获胜的情况
  胜利的情况有如下四种:横向情况此时黑子获胜
  竖向情况此时白子获胜
  左斜线情况此时白子获胜
  右斜线情况此时黑子获胜
  否则,黑白双方打成平手(即平局)。项目的难点
  1。将canvas上绘制的棋盘和矩阵一一对应
  体验下代码你就明白了:监听鼠标点击棋盘的位置listenDownChessman(){this。checkerboardDom。onclickevent{let{offsetX:x,offsetY:y}const{width,height}this。xMath。round((x15)width);yMath。round((y15)height);if(this。checkerboardMatrix〔x〕〔y〕!undefinedObject。is(this。checkerboardMatrix〔x〕〔y〕,0)){this。checkerboardMatrix〔x〕〔y〕this。刻画棋子this。drawChessman({x,y},Object。is(this。role,EnumRoles。BLACK));this。roleObject。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,chessmanwinwhite):this。currentRoleDom。setAttribute(class,chessmanwinblack)this。message赢得本场胜利this。setResultMsgHint();}}}}复制代码
  我们需要获取canvas上相对原点(左上角)的偏移值,计算出在矩阵上对应的位置。然后判断该位置是否已经落子,如果没有落子,则进行棋子的绘制。
  2。判断输赢
  在上面获胜情况中我们已经了解。下面我们看看代码实现:methodgameReferee游戏裁判paramcoordinate坐标(x,y)paranrole角色gameReferee(coordinate,role){const{x,y}if(xundefinedyundefinedroleundefined)连杀的次数letcountContinuous0;x轴的情况constXContinuousthis。checkerboardMatrix。map(xx〔y〕);y轴的情况constYContinuousthis。checkerboardMatrix〔x〕;constS1Continuous〔〕;constS2Continuous〔〕;this。checkerboardMatrix。forEach((x,i){左斜线constS1Itemx〔y(xi)〕;if(S1Item!undefined){S1Continuous。push(S1Item);}右斜线constS2Itemx〔y(xi)〕;if(S2Item!undefined){S2Continuous。push(S2Item);}});当前落棋点所在的X轴Y轴交叉斜轴,只要有能连起来的5个子的角色即有胜者〔XContinuous,YContinuous,S1Continuous,S2Continuous〕。forEach(axis{if(axis。some((x,i)axis〔i〕!0axis〔i2〕axis〔i1〕axis〔i1〕axis〔i〕axis〔i〕axis〔i1〕axis〔i1〕axis〔i2〕)){countContinuous}});if(countContinuous){this。this。checkerboardDom。游戏结束,不允许点击}}复制代码
  上面代码的注释已经讲解得很清楚了。简单来说,我们就是将二维数组分成四种情况处理,将其形成四个一维数组,再对四个一维数组进行判断,如果它们中有连续5个相同的数值,则可判定输赢。
  比如,在1515的棋盘中,某次落棋后,可得:XContinuous〔0,1,2,2,2,2,2,0,2,1,0,1,1,0,0〕复制代码
  0代表空,1代表黑子,2代表白子
  这里XContinuous横轴中就有连续五个白子,则白方获胜。
  体验地址:五子棋双人模式人机模式JavaScript实现码上掘金五子棋双人模式人机模式JavaScript实现码上掘金
  赠人玫瑰,手留花香。俺不要玫瑰,只要读者的一个举手之劳的赞逃:)
搜索 投诉 评论 转载

海外工作之北欧五国挪威篇在这务工高于澳大利亚新西兰的收入北欧五国,包括挪威,瑞典,丹麦,芬兰,冰岛,北欧五国向来以福利优越而闻明,挪威更被称为世界上最幸福的国家,幸福度排名世界第一。听到挪威不仅就会想到森林,村上春树笔下的风景……应积极引导普通住宅价格合理回归根据中央2016年底中央经济会议以来一直坚持的房住不炒政策,今年4月29日政治局会议精神,以及最近7月21日国常会的有关表述,可以得到一条关于我国房地产调控政策的主线:坚持房住……女性要对抗衰老,少不了这2件事,可不是轻而易举就能得到的每个女性都想要追求美丽容颜,如果可以逆生长,让自己青春永驻,这是最理想的状态。但是年龄增长难免就会有衰老的表现。如果确实想要让自己更加年轻,关键是掌握合理的方法来积极对抗衰老。……五子棋两人对战头条创作挑战赛banner这是一个关于五子棋实现的系列文,本文是第1篇。总共会分成两篇文章:五子棋JavaScript实现两人对战:讲解如何实现两人对战,当然你可以……又到秋分丰收节喝茶收获健康丰收中国【前言】秋分,太阳黄经180度,阳光直射赤道,昼夜平分。秋分秋三月90天的第45天,是天气由热转凉的分水岭。在我国传统文化中,秋在四时中对应五行中的金,故人们也将……华为钱包开启电子医保卡业务众测IT之家2月12日消息,近日华为钱包9。0。21。210开启电子医保卡业务众测,该功能由华为钱包联合国家政务服务平台、国家医疗保障局共同实现,可在定点药店医院使用医保码进行支付……邵东今朝更好看,奋力谱写文旅发展新篇章!2021年以来,邵东市委、市政府高位推动,有序推进全域旅游建设,促使文旅产业蓬勃发展。在邵东市委、政府的坚强领导下,邵东市文化旅游广电体育局深入推进文旅融合发展,完成了贺……乐福真厉害,这么大的年纪得到了骑士队的高薪续约大家好,我是小编帅帅望远镜,今天,我们关注的题目是:乐福真厉害,这么大的年纪得到了骑士队高薪续约。面对雄鹿队,乐福继续替补出场,没想到手感非常好,效率奇佳。在短短14分钟……Python大数据分析精选23028期超级大乐透最近重写了部分Python代码,按粉丝要求,添加了各种条件统计分析功能,对所有20年的超级大乐透开奖记录数据条件类型进行统计分析【将会单独发布一篇文章】,由于内容太多,没有发布……时隔225天,AG超玩会击败DYG重回S组,一诺稳定了,未央大家好我是指尖,恭喜成都AG超玩会,时隔225天再次回到S组,23日以3:1比分击败DYG之后以四大场的积分,携手广州TTG回到S组,对于他们来说,这一刻等了太久了。AG……经常感到疲乏劳累,也是一种病!中医健脾补肾,帮你改善疲劳随着现代生活节奏的加快,越来越多的人身体都处于亚健康状态,焦虑、失眠、疲乏、劳累,已经成为家常便饭,正常情况下,我们在经过一定时间的休息后,精力自然就会恢复,但是很多人不管怎么……病毒病毒是侵入活宿主并通过在细胞组织内繁殖来感染其身体的微观生物。病毒是依靠活细胞繁殖的微小传染因子。它们可能使用动物、植物或细菌宿主来生存和繁殖。因此,关于病毒是否应被视为……
新能源车爆发前,关注锂是对的,现在我们又该关注什么?如何看待中国制造业1个亿营业额,利润却只有300万?还有意义我国企业全面预算管理工作存在问题与对策谁的青春不迷茫重要的是在迷茫中成长专家指导摆脱错误的家教方法及家长形象曼谷著名旅游景点玉佛寺前第二条地下过街隧道建成南极海冰面积创历史新低拆掉思维里的墙读后感6比2胜上海队象甲联赛京冀联队晋级六强摩登木石肆意享受阳台露营的愉悦淡忘造句用淡忘造句大全三星GalaxyBook3Ultra高端笔记本曝光i7137
壬戌元宵应制绝句八首其八最新成熟男士发型硬汉背头发型图片看守所判决前羁押时间是怎样的一个好教师具备的人格魅力晨钟暮鼓的故事公元1658年历史大事件合伙人协议书4。1持仓收评一生长短未知,可看此后经年要花260块年费才能进的山姆会员店,究竟有什么奥秘?泡萝卜怎么做好吃?泡萝卜泡多久才能吃另辟蹊径消息称华为将推出5G手机壳,实现4G手机支持5G网络

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州