今回は久しぶりの将棋の投稿になります。
少しコンピュータを強くできたのでそれについて投稿します。
ソースコード
if (Setable.size() == 0 || enemyKoma.size() == 0) { //コマを動かす
ArrayList<Point> cpList = new ArrayList<Point>(); //移動できる場所のリスト
Point oldPoint = new Point();
Point newPoint = new Point();
int random = 0;
int isRobEnemy = 0;
for(int y = 0; y < 9; y++){
for(int x = 0; x < 9; x++) {
if(board.teban[y][x].getKomaType() == Teban.enemy) {
cpList = board.canMoveList(x, y, board.direction);
}
for(int i = 0; i < cpList.size(); i++){
if(board.teban[cpList.get(i).y][cpList.get(i).x].getKomaType() == Teban.you) {
oldPoint = new Point(x, y);
newPoint = new Point(cpList.get(i).x, cpList.get(i).y);
isRobEnemy = 1;
break;
}
}
if(isRobEnemy == 1)
break;
}
if(isRobEnemy == 1)
break;
}
System.out.println("turn:" + turn);
if(isRobEnemy == 0) {
do {
oldPoint = player[turn - 1].nextMove(board, new Point(-1, -1));
System.out.println(oldPoint);
cpList = board.canMoveList(oldPoint.x, oldPoint.y, board.direction);
} while (cpList.size() <= 0);
System.out.println("oldPoint:" + oldPoint);
System.out.println(cpList);
r = new Random(System.currentTimeMillis());
random = r.nextInt(cpList.size());
newPoint = cpList.get(random);
System.out.println("random" + random);
}
System.out.println("oldPoint:" + oldPoint);
System.out.println("newPoint:" + newPoint);
if (board.teban[newPoint.y][newPoint.x].getKomaType() == Teban.you) {
if (board.koma[newPoint.y][newPoint.x].getObverse() > Koma.evolution)
enemyKoma.add(board.koma[newPoint.y][newPoint.x].getObverse() - Koma.evolution);
else
enemyKoma.add(board.koma[newPoint.y][newPoint.x].getObverse());
}
if (board.koma[newPoint.y][newPoint.x].getObverse() == Koma.king)
EndMessageDialog("対戦相手の勝ちです");
board.setKomaAndTeban(oldPoint, newPoint, board.koma[oldPoint.y][oldPoint.x].getObverse(), Teban.enemy);
}
どんどん動くようになってきて嬉しいですね。
もっと強くしていきたいです。
ではまた。
コメント