微信小程序五子棋游戏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中最简洁的编码html字符串的方法
Oct 11 Javascript
Angular Module声明和获取重载实例代码
Sep 14 Javascript
js的OOP继承实现(必看篇)
Feb 18 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
详解angular笔记路由之angular-router
Sep 12 Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 Javascript
vue小白入门教程
Apr 02 Javascript
vue-router命名路由和编程式路由传参讲解
Jan 19 Javascript
利用layer实现表单完美验证的方法
Sep 26 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
微信小程序排坑指南详解
2018/05/23 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
Python生成验证码实例
2014/08/21 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
初中学生评语大全
2014/04/24 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
诚信考试标语
2014/06/24 职场文书
2015年招聘工作总结
2014/12/12 职场文书
售后服务质量承诺书
2015/04/29 职场文书