微信小程序五子棋游戏AI实现方法【附demo源码下载】
程序员文章站
2023-11-12 11:27:58
本文实例讲述了微信小程序五子棋游戏ai实现方法。分享给大家供大家参考,具体如下:
demo下载
五子棋ai篇demo
效果图
原理
1. 将棋盘中能够胜利的五...
本文实例讲述了微信小程序五子棋游戏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设置陷阱而取得胜。
希望本文所述对大家微信小程序开发有所帮助。