2

私のプログラムはスライディングパズルゲームとして設計されています。私は現在、乱数を使用してタイルを一定時間移動し、プレーヤーがボードを解決できるようにするシャッフルボタンに取り組んでいます。

現在、シャッフルボタンを押したときに発生する「アクティビティのメソッドを実行できませんでした」というエラーメッセージが表示されます。whileループの外にあるときは、ボタンを押し続けることができましたが、クリックするたびに一定の時間を残さなければなりませんでした。どういうわけかプログラムをオーバーロードすることを考えています...しかし、負荷を減らす方法がわかりません...

    public void shuffleTiles(View v){ //Shuffles the tiles using random numbers

    int tileToMove;

    while (computerMoves < 5){
        tileToMove = randomNumbers.nextInt(12);
        moveTile(tileToMove, false);
    }

プログラムの主な要点は、タイルが移動したことを示すために画像を交換するこのメソッドを回避することです。

    private void moveTile(int button, boolean playerMove) { //The main method which causes a tile to be moved

    int tileToReplace = movePossibleTest(button); //Run the test to see if there is a blank square next to it
    if (tileToReplace != 0){

        Drawable originalImage = buttons[button-1].getDrawable(); //Saves a drawable of the original image
        Drawable blankImage = buttons[tileToReplace-1].getDrawable(); //Saves a drawable of the blank tile

        buttons[button-1].setImageDrawable(blankImage); //Swaps the images
        buttons[button-1].setTag("blank");

        buttons[tileToReplace-1].setImageDrawable(originalImage); //Swaps the tags that identify which is the blank tag
        buttons[tileToReplace-1].setTag(null);

        if (playerMove){ //If the move was initiated by a player click
            moveCount(true);
        }
        else moveCount(false);
    }
}
4

1 に答える 1

0

アプリをダウンさせている他のアクティビティがある場合は、アクティビティライフサイクルを使用してそれらを確実に閉じることができます。これは、ある特定のプロジェクトでいくつかのフリーズを解決するのに役立ちました。

于 2012-05-18T18:23:58.237 に答える