1

私は爆撃機のゲームを作っている学校のプロジェクトに取り組んでいます。プレイフィールドにはユーザーと AI の 2 人のボンバーマンがいます。

ユーザーが爆弾を置いてそこから離れると、爆弾が点滅し、時間切れになると爆発します。

ただし、これは AI では機能しません。

AI が爆弾を置いて立ち去り、フラッシュしてから爆発するはずのときに、このエラーを残してアプリがクラッシュします。

FATAL EXCEPTION: Timer-0
 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

CountDownTimerコードは次のとおりです。

public void explodeAIBomb(){


    //Starts countdown 2-4 seconds

    new CountDownTimer(new Random().nextInt(2000) + 2000, 300) {
        //test for onTick; bomb flashes
        boolean test = false;

    public void onFinish() {
        //on explosion{
        gameBoard[locateAIX][locateAIY] = new Blast();          
        explosionSide(locateAIX, locateAIY);
        explosionVert(locateAIX, locateAIY);
        updateView();


        //Clear all blasts after 1 second
        new CountDownTimer(1000, 1000){
            public void onFinish(){
                for (int x = 0; x < XasLength + 1; x++) {
                    for (int y = 0; y < YasLength + 1; y++) {
                        if(gameBoard[x][y] != null){
                            if(gameBoard[x][y].getTileId() == BLAST || gameBoard[x][y].getTileId() == BLAST_SIDE || gameBoard[x][y].getTileId() == BLAST_VERT){
                                gameBoard[x][y] = null;
                            }
                        }
                    }
                }
                aiBombPlanted = false;
                updateView();
            }
            @Override
            public void onTick(long millisUntilFinished) {
            }                   
        }.start();
        updateView();
    }

    //Flashes the bomb every 0.3 second
    public void onTick(long millisUntilFinished) {              
        if(test){
            loadTile(BOMB, r.getDrawable(R.drawable.bomb));
            test = false;
        }
        else{
            loadTile(BOMB, r.getDrawable(R.drawable.bomb2));
            test = true;
        }
        updateView();
    }
}.start();

}

4

1 に答える 1