最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

原生JS+Canvas五子棋游戏_javascript技巧

来源:动视网 责编:小OO 时间:2020-11-27 20:18:09
文档

原生JS+Canvas五子棋游戏_javascript技巧

一、功能模块;先看下现在做完的效果。线上体验:https://wj704.github.io/five_game.html。主要功能模块为。1.人机对战功能;2.悔棋功能;3.撤销悔棋功能;二、代码详解;2.1 人机对战功能实现。从效果图可以看到,棋盘的横竖可以放的位置为15*15,通过canvas画棋盘。知道格子数后,我们先看五子棋有多少种赢法。根据赢法总数定义分别保存计算机和人赢法的数组。然后就是人开始下棋。oneStep() 方法为落子,要在棋盘上画一个棋子。
推荐度:
导读一、功能模块;先看下现在做完的效果。线上体验:https://wj704.github.io/five_game.html。主要功能模块为。1.人机对战功能;2.悔棋功能;3.撤销悔棋功能;二、代码详解;2.1 人机对战功能实现。从效果图可以看到,棋盘的横竖可以放的位置为15*15,通过canvas画棋盘。知道格子数后,我们先看五子棋有多少种赢法。根据赢法总数定义分别保存计算机和人赢法的数组。然后就是人开始下棋。oneStep() 方法为落子,要在棋盘上画一个棋子。
 本篇文章主要介绍了原生JS+Canvas实现五子棋游戏实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

一、功能模块

先看下现在做完的效果:

线上体验:https://wj704.github.io/five_game.html

主要功能模块为:

1.人机对战功能
2.悔棋功能
3.撤销悔棋功能

二、代码详解

2.1 人机对战功能实现

从效果图可以看到,棋盘的横竖可以放的位置为15*15,通过canvas画棋盘:

知道格子数后,我们先看五子棋有多少种赢法:

根据赢法总数定义分别保存计算机和人赢法的数组:

然后就是人开始下棋:

oneStep() 方法为落子,要在棋盘上画一个棋子:

 //画棋子
 var oneStep = function(i,j,me){
 // debugger;
 context.beginPath();
 context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI);//画圆
 context.closePath();
 //渐变
 var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 - 2, 13, 15 + i * 30 + 2, 15 + j * 30 - 2, 0);

 if(me){
 gradient.addColorStop(0,'#0a0a0a');
 gradient.addColorStop(1,'#636766');
 }else{
 gradient.addColorStop(0,'#d1d1d1');
 gradient.addColorStop(1,'#f9f9f9');
 }
 context.fillStyle = gradient;
 context.fill();
 }

接着看计算机怎么下棋,具体看computerAI()方法:

根据相应的权重,计算出计算机应该落子的位置。

2.2 悔棋功能

要提的是,这里暂时只能悔一步棋。悔棋功能主要关键点是:1、销毁刚刚下的棋子;2、将之前不可能赢的状态还原;看下具体的代码:

minusStep()为销毁棋子的方法,我们看下是怎么销毁的。

首先通过clearRect()擦掉该圆,然后再重新画该圆周围的格子,注意相应的位置,这里花了些时间折腾。

2.3 撤销悔棋功能

悔棋过后,再撤销,相当于还原悔棋之前的状态。代码比较简单:

至此,比较简单的完成了这三个功能。

三、总结

五子棋游戏的核心关键点是:1、弄清楚有多少种赢法;2、怎么判断是否已经赢了;3、计算机下棋算法。这里巧妙地运用数组存储赢法,判断是否赢了,通过权重比较,计算出计算机该下棋的位置。

过程中用到canvas,之前有学习过,虽然很久没用,查了些资料,复习了怎么画线,画圆,学会了怎么如何清除一个圆等。
然后要注意的是,用原生Js怎么为元素添加、删除class。

最后代码放到github上了,地址:https://github.com/wj704/wj704.github.io/blob/master/five_game.html

文档

原生JS+Canvas五子棋游戏_javascript技巧

一、功能模块;先看下现在做完的效果。线上体验:https://wj704.github.io/five_game.html。主要功能模块为。1.人机对战功能;2.悔棋功能;3.撤销悔棋功能;二、代码详解;2.1 人机对战功能实现。从效果图可以看到,棋盘的横竖可以放的位置为15*15,通过canvas画棋盘。知道格子数后,我们先看五子棋有多少种赢法。根据赢法总数定义分别保存计算机和人赢法的数组。然后就是人开始下棋。oneStep() 方法为落子,要在棋盘上画一个棋子。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top