Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

javaについて

privateのところで式の開始が不正ですと出てしまいます.テキストどおりに打ったのですがエラーが出てしまいどうしようもないです.原因がわかる方よろしくお願いします。

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;
        }
    };
    
    public void move(Board board)
    {
        Vector movables = board.getMovablePos();
        
        if(movables.isEmpty())
        {
            board.pass();
            return;
        }
        
        if(movables.size() == 1)
        {
            board.move((Point)movables.get(0));
            return;
        }
        
        int limit;
        
        if(Board.MAX_TURNS - board.getTurns() <= wld_depth)
        {
            limit = Integer.MAX_VALUE;
        }
        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.MAX_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 alpha,int beta)
        {
            if(board.isGameOver()||limit == 0)
            return evaluate(board);
            
            Vector  pos = board.getMovablePos();
            int eval;
            
            if(pos.size() == 0)
            {
                board.pass();
                eval = -alphabeta(board,limit,-beta,-alpha);
                board.undp();
                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;
        }
    }
}

3

回答

3981

閲覧

3件の回答

評価

0

ここは、単にわからないことを聞けば教えてもらえるところ
じゃないんだ。

学校の課題かい?それなら聞く相手が違うだろう。

>テキストどおりに打ったのですが
そう思ってるのだろうが、人間いくらでも間違いはある。
思い込みを捨ててもう一度見直してみることだ。

評価

0

どっかブロックが抜けてるんでしょう。
開始ブロックに対応する終了ブロックがちゃんとあるか一つずつ確認してみては?

評価

0

クラス名でググったらそれっぽいのがありましたが、
これはチェスのプログラムの一部ですか?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。