微信小程序五子棋游戏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常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
Dec 25 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
JavaScript中的ubound函数使用实例
Nov 04 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
微信小程序 picker-view 组件详解及简单实例
Jan 10 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
js实现简单分页导航栏效果
Jun 28 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
使用Python对MySQL数据操作
2017/04/06 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
python如何制作缩略图
2019/04/30 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
创先争优演讲稿
2014/09/15 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
债务纠纷代理词
2015/05/25 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
 python中的元类metaclass详情
2022/05/30 Python
python 镜像环境搭建总结
2022/09/23 Python