微信小程序五子棋游戏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 相关文章推荐
prototype Element学习笔记(Element篇三)
Oct 26 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
22点关于jquery性能优化的建议
May 28 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
解决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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php正则表达匹配中文问题分析小结
2012/03/25 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
Python中的迭代器漫谈
2015/02/03 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
python快排算法详解
2019/03/04 Python
python+pyqt5编写md5生成器
2019/03/18 Python
通过python3实现投票功能代码实例
2019/09/26 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
什么是serialVersionUID
2016/03/04 面试题
在校大学生的职业生涯规划书
2014/03/14 职场文书
王老吉广告词
2014/03/20 职场文书
单位委托书范本
2014/04/04 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
大学生个人学习总结
2015/02/15 职场文书