我是初学Android开发者,我正在创建一个名为" Jigsaw"的益智游戏。
以下是主要游戏画面的截图示例:
我想要做的是在onCreate方法中调用另一个名为shuffleGameBoard()的方法:
public void shuffleGameBoard(){
gameGrid.removeAllViews();
GameBoard.scrambleBoard(gameBoard);
int index = 0;
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
switch(gameBoard.getBoardValues()[i][j].getValue()){
case 0:
gameGrid.addView(blankButton, index);
break;
case 1:
gameGrid.addView(oneButton, index);
break;
case 2:
gameGrid.addView(twoButton, index);
break;
case 3:
gameGrid.addView(threeButton, index);
break;
case 4:
gameGrid.addView(fourButton, index);
break;
case 5:
gameGrid.addView(fiveButton, index);
break;
case 6:
gameGrid.addView(sixButton, index);
break;
case 7:
gameGrid.addView(sevenButton, index);
break;
case 8:
gameGrid.addView(eightButton, index);
break;
case 9:
gameGrid.addView(nineButton, index);
break;
case 10:
gameGrid.addView(tenButton, index);
break;
case 11:
gameGrid.addView(elevenButton, index);
break;
case 12:
gameGrid.addView(twelveButton, index);
break;
case 13:
gameGrid.addView(thirteenButton, index);
break;
case 14:
gameGrid.addView(fourteenButton, index);
break;
case 15:
gameGrid.addView(fifteenButton, index);
break;
default:
break;
}
index++;
}
}
}
此方法在我的GameBoard.java类中调用另一个名为scrambleBoard的方法:
public static void scrambleBoard(GameBoard board){
Random gen = new Random();
int count = 0;
while (count < 100){
int i1 = gen.nextInt(4);
int j1 = gen.nextInt(4);
if (isValidSwap(board.getBoardValues()[i1][j1], board.getEmptyLoc(board))) {
board.swapTile(board.getBoardValues()[i1][j1], board.getEmptyLoc(board));
count++;
}
}
}
这就是我现在遇到的问题:我在MainActivity.java中使用的GameBoard类的实例正在被正确洗牌。在我的游戏中交换tile的机制根据实际底层GameBoard实例的洗牌方式工作。问题;但是,表示我的GameBoard类实例的实际按钮根本没有以正确的顺序显示。这是我打电话给shuffleGameBoard()之后董事会的样子。看起来好像所有的按钮都是从1到15开始按顺序排列,但实际上他们正在对待它们就好像它们看起来不像它们一样。例如,假设董事会被洗牌,以便&#34;两个&#34;瓷砖最后是&#34;空白&#34;瓦。我可以点击&#34;两个&#34;瓷砖,它仍然会与空的瓷砖交换。瓷砖的位置将被交换,但瓷砖首先不在正确的位置,因此无法正常工作。
澄清一下:当我将视图(ImageButtons)添加回GridLayout时,它们没有以正确的顺序显示。我该怎么做才能以正确的顺序将我的ImageButtons添加到我的GridLayout中,正确的顺序意味着我在MainActivity.java类中使用的混洗GameBoard类实例中的数字顺序。
我希望我的问题很明确,如果有什么不清楚请请求更多信息或澄清,我很乐意提供。感谢您提供任何帮助。