[Java] 将棋:取れるコマは必ずとるようにする。

Java

今回は久しぶりの将棋の投稿になります。

少しコンピュータを強くできたのでそれについて投稿します。

ソースコード

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);
}

どんどん動くようになってきて嬉しいですね。

もっと強くしていきたいです。

ではまた。

コメント

タイトルとURLをコピーしました