0

hello Android Sudoku の例でダイアログ ボックスを表示しようとしていますが、アプリを実行しても何も起こりません。game.java で、パズルがこのように解決されているかどうかを確認します

/******Check to see if the game is complete**/
   public boolean isSolved()
   {
       for (int element : puzzle) {
           if (element == 0) return false;
        }
        return true;           
   }

次に、onKeyDown メソッドの PuzzleView で、isSolved が true であるかどうかを検出し、それがダイアログを表示するかどうかを検出しようとします

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (game.isSolved() == true) {
        Intent i = new Intent(mActivity, Congratulations.class);
        getContext().startActivity(i);
    } else {
        Log.d(TAG, "onKeyDown: keycode=" + keyCode + ", event=" + event);
        switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_UP:
            select(selX, selY - 1);
            break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
            select(selX, selY + 1);
            break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
            select(selX - 1, selY);
            break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
            select(selX + 1, selY);
            break;
        case KeyEvent.KEYCODE_0:
        case KeyEvent.KEYCODE_SPACE:
            setSelectedTile(0);
            break;
        case KeyEvent.KEYCODE_1:
            setSelectedTile(1);
            break;
        case KeyEvent.KEYCODE_2:
            setSelectedTile(2);
            break;
        case KeyEvent.KEYCODE_3:
            setSelectedTile(3);
            break;
        case KeyEvent.KEYCODE_4:
            setSelectedTile(4);
            break;
        case KeyEvent.KEYCODE_5:
            setSelectedTile(5);
            break;
        case KeyEvent.KEYCODE_6:
            setSelectedTile(6);
            break;
        case KeyEvent.KEYCODE_7:
            setSelectedTile(7);
            break;
        case KeyEvent.KEYCODE_8:
            setSelectedTile(8);
            break;
        case KeyEvent.KEYCODE_9:
            setSelectedTile(9);
            break;
        case KeyEvent.KEYCODE_ENTER:
        case KeyEvent.KEYCODE_DPAD_CENTER:
            game.showKeypadOrError(selX, selY);
            break;
        default:
            return super.onKeyDown(keyCode, event);
        }
        return false;
    }
    return false;

}

私はJavaとAndroidの開発を学んでいるので、どこが間違っているのか教えてください。さらに詳しい情報が必要な場合は、質問してください。質問の編集セクションに入力します。

4

2 に答える 2

0

これは答えではありません。ログの置き方を示すだけです

/******Check to see if the game is complete**/
   public boolean isSolved()
   {
       for (int element : puzzle) {
           if (element == 0) return false;
        }
        Log.d("TAG", " isSolved() is true");
        return true;           
   }

アプリケーションを実行し、logcat に「 isSolved() is true 」と表示されるかどうかを確認します。

于 2012-08-30T02:32:19.647 に答える
0

最後に、ゲームが完了したかどうかを確認する方法は、これを game.class に含めることでした。

/****** Check to see if the game is complete **/
public boolean isSolved() {
    for (int element : puzzle) {
        if (element == 0)
            return false;
    }
    return true;
}

また、

public boolean checkIsSolved()
{
    //check if the game is complete after each valid move
    if (isSolved() == true) { 
        Intent i = new Intent(this, Congratulations.class); 
        startActivity(i);} 
        else
        {
            return false;
        }
    return false;
}
于 2012-09-20T03:18:58.787 に答える