<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body {
padding: 0 0 0 0;
}
html {
padding: 0 0 0 0;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>
<div id='gameInfo'>
</div>
</body>
<script src="dist/MyGo.js"></script>
<script>
let infoDiv = document.getElementById("gameInfo");
let offset = 30;
let geziWidth = 20;
let c = document.getElementById("myCanvas");
let ctx = c.getContext("2d");
ctx.strokeStyle = 'black';
let boardWidth = 5;
function clearDesk() {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, 500, 500);
for(let i = 0; i < boardWidth; i++) {
// ctx.strokeText(i, i * geziWidth - 5, geziWidth - 5);
ctx.beginPath();
ctx.moveTo(i * geziWidth+offset, offset);
ctx.lineTo(i * geziWidth+offset, offset+geziWidth * (boardWidth-1));
ctx.closePath();
ctx.stroke();
}
for(let i = 0; i < boardWidth; i++) {
// ctx.strokeText(i, geziWidth - 15, geziWidth * i + 5);
ctx.beginPath();
ctx.moveTo(offset, offset+geziWidth * i);
ctx.lineTo(offset+geziWidth * (boardWidth-1), offset+geziWidth * i);
ctx.closePath();
ctx.stroke();
}
};
clearDesk();
function drawPiece(x,y,color) {
ctx.beginPath();
ctx.arc(offset+geziWidth * x, offset+geziWidth * y, geziWidth/2, 0, Math.PI * 2, true);
ctx.closePath();
ctx.stroke();
if(color == 1) {
ctx.fillStyle = 'black';
} else {
ctx.fillStyle = 'white';
}
ctx.fill();
};
function drawState(state) {
clearDesk();
let cellMap = state.cellMap;
for(let idx in cellMap){
let xy = game.curState.idx2xy(idx);
drawPiece(xy[0],xy[1],cellMap[idx]);
}
drawInfo();
};
function drawInfo(){
let str = '';
// let blocks = game.curState.blocks;
// for(let i=0; i<blocks.length; i++){
// let block = blocks[i];
// str += '<br/>zi: ';
// let cell = block;
// do{
// str += '('+cell.x+','+cell.y+') ';
// cell = cell.next;
// }while(cell);
// str += 'qi: ';
// for(let idx in block.qi){
// let xy = game.curState.idx2xy(idx);
// str += '('+xy[0]+','+xy[1]+') ';
// }
// }
str += 'rate: ' + game.node.Q/game.node.N;
infoDiv.innerHTML = str;
}
c.addEventListener('click', function(e) {
let canvasX = e.offsetX - offset;
let canvasY = e.offsetY - offset;
let x = Math.round(canvasX / geziWidth);
let y = Math.round(canvasY / geziWidth);
console.log(x+' '+y);
if(x < 0 || x >= boardWidth || y < 0 || y >= boardWidth) {
return;
}
if(game.curState.cellMap[game.curState.xy2idx(x,y)]) {
return;
}
game.placePiece(x, y, game.curColor);
drawState(game.curState);
}, false);
let game = new MyGo.Game(boardWidth);
</script>
</html>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 Java开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zipJava开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zip Java开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zip Java开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
资源推荐
资源详情
资源评论
收起资源包目录
Java开发基于蒙特卡洛树搜索(MCTS)算法实现围棋AI源码(课程大作业).zip (12个子文件)
State.js 6KB
介绍.md 54B
webpack.config.js 296B
MyGo.js 52KB
main.js 81B
package.json 361B
运行图.md 207B
package-lock.json 181KB
Node.js 7KB
index.html 3KB
Game.js 2KB
Cell.js 3KB
共 12 条
- 1
资源评论
北航程序员小C
- 粉丝: 2222
- 资源: 1823
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功