dポイントプレゼントキャンペーン実施中!

AIを作っているのですが、その過程で「式の開始が不正です」と出てきます。
自分ではどこが悪いのか見つけきれないので教えてくれませんか。
以下がプログラムソースです。

class AlphaBetaAI extends AI{
class Move extends Point{
public int eval = 0;
public Move(){
super(0, 0);
}

public Move(int x, int y, int e){
super(x, y);
eval = e;
}
};

private Evaluator Eval;

public void move(Board board){

Vector movables = book.getMovablePos();

if(movables.isEmpty()){
// 打てる箇所がなければパスする
board.pass();
return;
}

if(movables.size() == 1){
// 打てる箇所が一か所だけならば探索を行わず、即座に打って返る
board.move((Point) movables.get(0));
return;
}

int limit;
Eval = new MidEvaluator();
// sort(board, movables, presearch_depth); // 事前に手がよさそうな順にソート

if(Board.Max_TURNS - board.getTurns() <= wld_depth){
limit = Integer.MAX_VALUE;
if(Board.MAX_TURNS - board.getTurns() <= perfect_depth)
Eval = new PerfectEvaluator();
else
Eval = new WLDEvaluator();

}else{
limit = normal_depth;
}

int eval, eval_max = -Integer.MAX_VALUE;
Point p = null;
for(int i=0; i<movables.size(); i++){
board.move((Point)movables.get(i));
eval = -alphabeta(board, limit-1, -Integer.MAX_VALUE, -INTEGER.MIN_VALUE);
board.undo();

if(eval > eval_max) {
eval_max = eval;
p = (Point)movables.get(i);
}

board.move(p);
}

private int alphabeta(Board board, int limit, int alpham, int beta){
// 深さ制限に達したら評価値を返す
if(board.isGameOver() || limit == 0)
return Eval.evaluate(board);

Vector pos = board.getMovablePos();
int eval;

if(pos.size() == 0){
// パス
board.pass();
eval = -alphabeta(board, limit, -beta, -alpha);
board.undo();
return eval;
}

for(int i=0; i< pos.size(); i++){
board.move((Point)pos.get(i));
eval = -alphabeta(board, limit-1, -beta, -alpha);
board.undo();

alpha = Math.max(alpha, eval);

if(alpha >= beta){
// β刈り
return alpha;
}
}
return alpha;
}

private void sort(Board board, Vector movables, int limit){
Vector moves = new Vector();
for(int i=0; i<movables.size(); i++){
int eval;
Point p = (Point) movables.get(i);

board.move(p);
eval = -alphabeta(board, limit-1, -Integer.MAX_VALUE, Integer.MAX_VALUE);
board.undo();

Move move = new Move(p.x, p.y, eval);
moves.add(move);
}

// 評価値の大きい順にソート(選択ソート)
int begin, current;
for(begin = 0; begin < moves.size() -1; begin++){
for(current = begin+1; current < moves.size(); current++){
Move b = (Move) moves.get(begin);
Move c = (Move) moves.get(current);
if(b.eval < c.eval){
// 交換
moves.set(begin, c);
moves.set(current,b);
}
}
}

// 結果の書き戻し
movables.clear();
for(int i=0; i<moves.size(); i++){
movables.add(moves.get(i));
}
return;
}

private int evaluate(Board board){
return 0;
}
}

質問者からの補足コメント

  • 早速の回答ありがとうございます
    エラーが出る行は、
    62行目、93行目、129行目に、「式の開始が不正です」「’;’がありません」のエラーが出ます。
    132行目に「構文解析中にファイルの終わりに移りました」のエラーもあります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/07/01 08:43

A 回答 (2件)

moveメソッドの閉じ括弧が無いような

    • good
    • 0

「どの行でエラーになるのか」は分からないんでしょうか?

この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!