2017-03-04 62 views
0

**嗨,大家好,我正在嘗試學習如何在android中構建應用程序和小遊戲。有人可以解釋增強for循環在這種情況下的工作原理以及增強for循環中的if語句如何檢查獲勝者?代碼來自於紅色和黃色圓圈的tic tac toe遊戲。對不起,如果問題已經被問到。 **增強for循環2d數組在android java類

// 0= yellow player; 1 = red player; 

int activePlayer=0; 

boolean gameIsActive = true; 

//2 means unplayed 
int[] gameState = {2,2,2,2,2,2,2,2,2}; 

int[][] winningPositions= {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7},{2,6,8}, {0,4,8}, {2,4,6}}; 

public void dropIn(View view) { 
    ImageView counter = (ImageView) view; 

    int tappedCounter = Integer.parseInt(counter.getTag().toString()); 

    if (gameState[tappedCounter] == 2 && gameIsActive) { 

     gameState[tappedCounter]=activePlayer; 

     counter.setTranslationY(-1000f); 

     if (activePlayer == 0) { 
      counter.setImageResource(R.drawable.yellow); 
      activePlayer = 1; 
     } else { 
      counter.setImageResource(R.drawable.red); 
      activePlayer = 0; 
     } 
     counter.animate().translationYBy(1000f).setDuration(300); 

    for (int[] winningPositon : winningPositions){ 
     if (gameState[winningPositon[0]]== gameState[winningPositon[1]]&& gameState[winningPositon[1]]==gameState[winningPositon[2]] 
       && gameState[winningPositon[0]]!=2){ 

     //someone has won 
     .... 

回答

0

增強環路不過是簡單的常規循環。 下面的for循環

for (int i = 0; i < myArray.length; i++) { 
    System.out.println(myArray[i]); 
} 

可以在增強的for循環被轉換爲

for (int myValue : myArray) { 
    System.out.println(myValue); 
} 

在你的情況

for (int[] winningPositon : winningPositions){ 
     if (gameState[winningPositon[0]]== gameState[winningPositon[1]]&& gameState[winningPositon[1]]==gameState[winningPositon[2]] 
       && gameState[winningPositon[0]]!=2){ 

「winningPositon」 是一個二維數組,所以如果迭代在其元件您將在每次迭代中獲得一個單維數組(「贏得位置」),其餘則是遊戲邏輯。

Ankit