微信小程序五子棋游戏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 相关文章推荐
js 深拷贝函数
Dec 04 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
Javascript 命名空间模式
Nov 01 Javascript
探寻Javascript执行效率问题
Nov 12 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
JavaScript中消除闭包的一般方法介绍
Mar 16 Javascript
vue图片加载与显示默认图片实例代码
Mar 16 Javascript
js微信分享实现代码
Oct 11 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
JS正则表达式验证密码强度
Mar 18 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 Javascript
JS继承实现方法及优缺点详解
Sep 02 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注入实例
2006/10/09 PHP
一个改进的UBB类
2006/10/09 PHP
php print EOF实现方法
2009/05/21 PHP
PHP项目开发中最常用的自定义函数整理
2010/12/02 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php实现字符串翻转的方法
2015/03/27 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
php支付宝在线支付接口开发教程
2016/09/19 PHP
Laravel 5+ .env环境配置文件详解
2020/04/06 PHP
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
子页向父页传值示例
2013/11/27 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Django中的用户身份验证示例详解
2019/08/07 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
项目专员岗位职责
2013/12/04 职场文书
技术总监管理职责范本
2014/03/06 职场文书
百日安全活动总结
2014/05/04 职场文书
学校联谊协议书
2014/09/16 职场文书
教育合作协议范本
2014/10/17 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android