先日作ったリバーシに単純なAIを追加してみた。

シェアする

各セルに対して重み付けを指定しておいて、単純に今の盤面だけ見て優先度が高い場所に打つだけのコンピュータです。

真面目に作るならリバーシの定石とか理論とかを取り入れた上で常に先を検索して最適解を求めないといけないですね。確かリバーシはコンピュータにはもう勝てないんだっけな?

function computer() {
	var ratios = [
	[9,0,6,5,5,6,0,9],
	[0,0,6,7,7,6,0,0],
	[6,6,7,8,8,7,6,6],
	[5,7,8,9,9,8,7,5],
	[5,7,8,9,9,8,7,5],
	[6,6,7,8,8,7,6,6],
	[0,0,6,7,7,6,0,0],
	[9,0,6,5,5,6,0,9]
	];
	var ratio = 0;
	var enableCellList = Array();
	for (var x=0; x<board.length; x++) {
		for (var y=0; y<board.length; y++) {
			if (ratio <= ratios[x][y] && board[x][y] == 0 && updateBoard(Vector2(x,y),false)) {
				if (ratio < ratios[x][y]) {
					enableCellList.clear();
				}
				ratio = ratios[x][y];
				enableCellList.push(Vector2(x,y));
			}
		}
	}
	if (enableCellList.length > 0) {
		var rand = Mathf.RoundToInt(Mathf.Round(Random.Range(0, enableCellList.length-1)));
		putPiece(enableCellList[rand]);
	}
}
Sponsored Link

シェアする

フォローする