![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c# デリゲート関連の命名について
-
java spring でエラーが出て困...
-
C++からC#のdllを参照する際、...
-
各店舗全て、リンゴは1個150円...
-
式の型は配列型で int に解決済...
-
数字のフォーマット(形式)を...
-
二次元配列の初期化の方法。
-
ビープ音をなめらかに鳴らしたい
-
前日日付の取得
-
JAVA エラー 式の開始が不正で...
-
三目並べ(Tick-Tack-Toe)をJav...
-
Stringの100と100.0を同一とみ...
-
JUnit4のアノテーションについて
-
複数のボタンを配置し、それぞ...
-
データ取得後、JTABLE列幅を変...
-
Javaでポインタ的なことはでき...
-
因数分解メソッドの改良
-
シンボルが解決できません
-
sin曲線とcos曲線を描くプログ...
-
リサージュ図形
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
式の型は配列型で int に解決済...
-
「配列定数は、イニシャライザ...
-
intが負の時に投げる例外はあり...
-
javaでカレンダー作成
-
メインが含まれていません
-
JAVA エラー 式の開始が不正で...
-
Javaで電卓を作りたい
-
javaでcsvファイル読込時の改行...
-
(Swing)JTextFieldを半角のみ入...
-
javaのエラーの意味がわかりま...
-
「WorkImage.getGraphics()」が...
-
初心者ですが、今javaで簡単な...
-
sin曲線とcos曲線を描くプログ...
-
java spring でエラーが出て困...
-
SwingでJtableのヘッダ行が表示...
-
Java 初心者 int型の取り扱い方
-
DataSet(DataTable)の使い方
-
JAVAでCの関数ポインタのような...
-
6桁の数字を重複なしでランダム...
-
JAVA EOFの検出 (条件文で「...
おすすめ情報
早速の回答ありがとうございます
エラーが出る行は、
62行目、93行目、129行目に、「式の開始が不正です」「’;’がありません」のエラーが出ます。
132行目に「構文解析中にファイルの終わりに移りました」のエラーもあります。