2012-08-30 40 views
0

我想在hello Android Sudoku示例中顯示一個對話框,但是當我運行應用程序時什麼也沒有發生。在game.java我檢查,如果讓人不解的是解決了這樣你好android數獨,檢查遊戲是否完成顯示一個對話框

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

然後在的onkeydown方法我嘗試檢測是否溶解情況是真實的PuzzleView,如果它是顯示對話框

@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開發,所以請任何幫助,以便我要去哪裏錯將非常感激。如果有人需要更多信息,請提問,我將把它放在編輯部分。

+0

這將是很難搞清楚的當我們不知道可變拼圖中有什麼時,這個問題。 –

+0

您想讓我發佈整個遊戲課程和整個puzzleview課程嗎? – WillNZ

+0

沒有必要,因爲它有很多代碼。只是想知道isSolved()是否返回true。你可以通過在那裏寫日誌來檢查。 –

回答

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; 
} 
0

WillNZ這不回答,只是向你展示如何把日誌

/******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中。

+0

謝謝我現在就試試這個 – WillNZ

+0

好吧,我在調試模式下運行此操作,但未看到isSolved logcat。 – WillNZ

+0

那就是我想知道的。問題不在於對話框顯示。由於isSolved()永遠不會返回true,因此不會調用您的對話活動。好的onKeyDown()方法將if(game.isSolved()== true)更改爲if(true)。這將在每次按下某個鍵時啓動對話框,但您可以檢查您的對話框是否顯示。 –

相關問題