微信小程序五子棋游戏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 相关文章推荐
二级域名转向类
Nov 09 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
Ajax清除浏览器js、css、图片缓存的方法
Aug 06 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
Bootstrap每天必学之简单入门
Nov 19 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
vue中使用element组件时事件想要传递其他参数的问题
Sep 18 Javascript
js判断鼠标移入移出方向的方法
Jun 24 Javascript
JS轮播图的实现方法2
Aug 25 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
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php使用pack处理二进制文件的方法
2014/07/03 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
python实现简单温度转换的方法
2015/03/13 Python
Python计算字符宽度的方法
2016/06/14 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
简单谈谈Python中的闭包
2016/11/30 Python
python九九乘法表的实例
2017/09/26 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
Python制作词云图代码实例
2019/09/09 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
全国道德模范事迹
2014/02/01 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
铁路安全事故反思
2014/04/26 职场文书
学生安全责任书模板
2014/07/25 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
Golang 正则匹配效率详解
2021/04/25 Golang