洗牌1-15的游戏板或者#34; Jigsaw"益智游戏(Android)

时间:2015-05-20 18:33:17

标签: java android shuffle

我是初学Android开发者,我正在创建一个名为" Jigsaw"的益智游戏。

以下是主要游戏画面的截图示例:

enter image description here

我想要做的是在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类实例中的数字顺序。

我希望我的问题很明确,如果有什么不清楚请请求更多信息或澄清,我很乐意提供。感谢您提供任何帮助。

0 个答案:

没有答案