2017-03-04 1 views
0

** Hallo Leute, ich versuche zu lernen, wie man Apps und kleine Spiele in Android bauen. Kann jemand erklären, wie die erweiterte for-Schleife in diesem Fall funktioniert und wie die if-Anweisung in der for-Schleife für den Gewinner überprüft? Der Code stammt von einem Tic Tac Toe Spiel mit rotem und gelbem Kreis. Entschuldigung, wenn die Frage bereits gestellt wurde. **Enhanced für Schleife 2d Array in Android Java-Klasse

// 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 
     .... 

Antwort

0

Erweiterte Schleifen sind nichts anderes als eine einfachere Regelschleife. Below für Schleife

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

Kann um verbesserte for-Schleife als

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

In Ihrem Fall

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

"winningPositon" umgewandelt werden, ist ein 2D-Array so, wenn Iterierte über seinem Element Sie erhalten bei jeder Iteration ein eindimensionales Array ("winningPosition"), rest ist die Spiellogik.

Ankit