0

J'ai fait un jeu LightsOut pour un cours de Java et comme un moyen d'apprendre Android, je suis en train de le reconstruire comme une application.J'essaie d'optimiser mon application Android

L'activité principale consiste en une grille de boutons à bascule. Lorsqu'un bouton est "coché" et que ses boutons adjacents sont basculés. Lorsque tous les boutons sont désactivés, le jeu est gagné. Je l'ai fait fonctionner jusqu'à ce point mais le code est horrible.

Je voudrais nettoyer le code en faisant un tableau bidimensionnel de boutons à bascule. Comment je l'ai pour le moment je déclare simplement chaque bouton individuellement. Cela fait de gros blocs de code redondant et sans moyen facile d'échelle.

A l'origine, en java je l'ai fait:

buttons = new LightButton[xCor][xCor]; 

    for (int x = 0; x < xCor; x++) { 
     for (int y = 0; y < xCor; y++) { 
      buttons[x][y] = new LightButton(this, x, y); 
      panel.add(buttons[x][y]); 
     } 
    } 

Où Xcor était basée sur l'entrée d'utilisateur avant la construction du gamefield. Cela a facilité l'initialisation et la vérification de l'état du jeu en traversant le tableau. Je n'ai tout simplement pas trouvé un moyen de le faire avec Android. Donc, y a-t-il un moyen de faire un tableau/une liste de boutons à bascule basés sur l'entrée de l'utilisateur?

Voici l'activité:

LightsOutActivity public class étend l'activité met en œuvre OnClickListener {

protected ToggleButton[][] buttonArray; 



/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    buttonArray = new ToggleButton[4][4]; 

    for (int x = 0; x < 4; x++) { 
     for (int y = 0; y < 4; y++) { 
      buttonArray[x][y] = new ToggleButton(this); 
      LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f); 
      buttonArray[x][y].setLayoutParams(params); 

      ((ViewGroup) findViewById(R.layout.main)).addView(buttonArray[x][y]); 
     } 
    } 



    setContentView(findViewById(R.layout.main)); 
} 

Les résultats immédiatement dans un proche force. La seule vue dans R.layout.main est une présentation linéaire. Pour l'instant, j'ai codé en dur la taille du tableau. Est-ce que vous ne pouvez pas prendre l'entrée de l'utilisateur à partir d'une vue EditText?

Répondre

0

Ensuite, vous pouvez initialiser votre tableau avec cette entrée.

+0

C'est ce que je voudrais faire, oui. Mon problème principal est l'initialisation d'un tableau de boutons/bascules. Ça ne marche tout simplement pas pour moi. Peut-être que je fais quelque chose de mal alors j'espérais un exemple à suivre. – thethomasramsey

+0

Postez votre code Android, peut-être que nous verrons le message d'erreur. – C0deAttack

+0

Ok. J'ai ajouté la méthode onCreate() à mon post original ci-dessus. – thethomasramsey

Questions connexes