微信小程序五子棋游戏AI实现方法【附demo源码下载】


Posted in Javascript onFebruary 20, 2019

本文实例讲述了微信小程序五子棋游戏AI实现方法。分享给大家供大家参考,具体如下:

DEMO下载

效果图

微信小程序五子棋游戏AI实现方法【附demo源码下载】

原理

1. 将棋盘中能够胜利的五子连珠方法遍历一个数组;
2. 当AI持棋时,遍历棋盘中所有棋子的空位;
3. 如果用户落子该位置,给用户该位置的五连珠方式进行加分:1连10分,2连20分,3连40分,4连80分;
4. 如果AI落子该位置,给AI该位置的五连珠方式进行加分:1连15分,2连25分,3连45分,4连85分;
5. 最后对该位置的分值进行比较,取最大分值位置的坐标,AI在最大分值位落子。

AI代码

computerAI(){
  var playerScore = [],computerScore = [];
  var max = 0,u = 0, v = 0;
  for (var i = 0; i < this.type; i++){
   playerScore[i] = [];
   computerScore[i] = [];
   for (var j = 0; j < this.type; j++){
    playerScore[i][j] = 0;
    computerScore[i][j] = 0;
   }
  }
  for (var x = 0; x < this.type; x++) {
   for (var y = 0; y < this.type; y++) {
    var po = this.checkPosition(x, y);
    if (po.status == 0){
     for (var k = 0; k < this.count; k++) {
      if (this.WIN_ARRAY[x][y][k]){
       if (this.player[k] == 1){
        playerScore[x][y] += 10;
       } else if (this.player[k] == 2){
        playerScore[x][y] += 20;
       } else if (this.player[k] == 3) {
        playerScore[x][y] += 40;
       } else if (this.player[k] == 4) {
        playerScore[x][y] += 80;
       }
       if (this.computer[k] == 1) {
        computerScore[x][y] += 15;
       } else if (this.player[k] == 2) {
        computerScore[x][y] += 25;
       } else if (this.player[k] == 3) {
        computerScore[x][y] += 45;
       } else if (this.player[k] == 4) {
        computerScore[x][y] += 85;
       }
      }
     }
     if (playerScore[x][y] > max){
      max = playerScore[x][y];
      u = x;
      v = y;
     } else if (playerScore[x][y] == max){
      if (computerScore[x][y] > computerScore[u][v]){
       u = x;
       v = y;
      }
     }
     if (computerScore[x][y] > max) {
      max = computerScore[x][y];
      u = x;
      v = y;
     } else if (computerScore[x][y] == max) {
      if (playerScore[x][y] > playerScore[u][v]) {
       u = x;
       v = y;
      }
     }
    }
   }
  }
  var point = this.checkPosition(u,v);
  if(point.status == 0){
   this.oneStep(point);
   point.status = -1;
   this.COMPUTER_ARRAY.push(point);
   for (var i = 0; i < this.count; i++) {
    if (this.WIN_ARRAY[point.pointX][point.pointY][k]) {
     this.computer[k]++;
     this.player[k] = 100;
    }
   }
   if (point.status == -1 && this.COMPUTER_ARRAY.length >= this.CHESS_LEN && this.checkWin(point, this.COMPUTER_ARRAY)) {
    wx.showToast({ title: '白棋胜利!' });
    this.isStart = false;
   }
   if (this.isStart) {
    this.isWho = !this.isWho;
   }
  }
 }

注意

此种方式实现的算法AI的防守比较重,进攻性不强,有待优化。而且很简单就能给AI设置陷阱而取得胜。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JavaScript 版本自动生成文章摘要
Jul 23 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
深入理解javascript中的立即执行函数(function(){…})()
Jun 12 Javascript
node.js中watch机制详解
Nov 17 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
SVG动画vivus.js库使用小结(实例代码)
Sep 14 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
Aug 05 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 Javascript
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
解决element ui select下拉框不回显数据问题的解决
Feb 20 #Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
Feb 20 #Javascript
Vue.js特性Scoped Slots的浅析
Feb 20 #Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 #Javascript
详解关于element级联选择器数据回显问题
Feb 20 #Javascript
JavaScript ES2019中的8个新特性详解
Feb 20 #Javascript
echarts实现词云自定义形状的示例代码
Feb 20 #Javascript
You might like
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
建立文件交换功能的脚本(二)
2006/10/09 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
Javascript实现字数统计
2015/07/03 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
Python中SQLite如何使用
2020/05/27 Python
大学生活学习的自我评价
2013/12/03 职场文书
安全责任书范本
2014/04/15 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
诚信承诺书模板
2014/05/26 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
教师节座谈会主持词
2015/07/03 职场文书
实验室安全管理制度
2015/08/05 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
送给客户微信问候语!
2019/07/04 职场文书