私のプログラムはスライディングパズルゲームとして設計されています。私は現在、乱数を使用してタイルを一定時間移動し、プレーヤーがボードを解決できるようにするシャッフルボタンに取り組んでいます。
現在、シャッフルボタンを押したときに発生する「アクティビティのメソッドを実行できませんでした」というエラーメッセージが表示されます。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);
}
}