2017-03-04 32 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