Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dépacement limites d'un tableau

    29 octobre 2014 à 10:10:05

    Bonjour,

    Je travaille encore sur mes fonctions de déplacement, le but étant de basculer toutes les cases de mon tableau dans la même direction (à la manière d'un 2048).

    Jusqu'à présent je les trouvais nickel, mais après de nombreux test je me rends compte que mes chiffres dépassent les limites de mon tableau!

    Un exemple :

    ligne de départ : __22

    ligne obtenue après un déplacement vers la droite : ___2 (le deuxième 2 disparaît du tableau!)

    Je bloque là dessus depuis un petit moment, est-ce que vous pouvez m'aider svp?

    Voici le code de la fonction déplacementHaut 

    		// Déplacement vers le haut
    			public void deplacementH()
    			{
    				for (int i = 0; i <= nbLig-1; i++)
    				{
    					for (int j = 0; j < nbCol; j++)
    					{
    						if (grille[i][j] != 0)
    						{
    							int a = i;
    							while (a > 0 && grille[a-1][j] == 0)
    							{
    								a--;
    							}
    							if (a >= 0 && grille[a][j] == 0)
    							{
    								grille[a][j] = grille[i][j];
    								grille[i][j] = 0;
    							}
    							
    						}	
    					}
    				}
    				
    			}
    • Partager sur Facebook
    • Partager sur Twitter
      29 octobre 2014 à 20:35:52

      Bonsoir,

      Dans la suite je vais considérer que quand l'index de la ligne augmente, tu "montes" :

      ligne 3

      ligne 2

      ligne 1

      ligne 0

      Si tu veux monter toutes tes lignes dans la mesure du possible (donc si la cellule en haut de la colonne est libre, on monte chaque cellule, sinon on bouge pas), tu peux faire ça avec une boucle de ce type là :

      for (int i = 0; i < nbCol; i++) {
          if (grille[nbLig - 1][i] != 0) {
              // si la première cellule de la colonne n'est pas libre, on ne bouge pas la colonne, on passe à la suivante
              continue;
          }
          for (int j = nbLig - 1; j > 0; j--) {
              grille[j][i] = grille[j-1][i];
              grille[j-1][i] = 0;
          }
      }

       ensuite pour les autres mouvements, il suffit d'adapter l'ordre des boucles, l'ordre de parcours des boucles et la cellule à vérifier

      -
      Edité par AdricoM 29 octobre 2014 à 20:37:07

      • Partager sur Facebook
      • Partager sur Twitter

      Dépacement limites d'un tableau

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown