[Résolu]Traduire un For en While

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Dump
Messages : 4
Inscription : 29 Nov 2012 06:13

[Résolu]Traduire un For en While

Message par Dump » 01 Oct 2014 06:59

Bonjour à tous, je débute (comme beaucoup me direz vous...) et voila mon problème :

J'ai réussi un test via une boucle for et j'aimerai la transformée en boucle while, d'habitude j'y arrive assez facilement... mais là :X quelque chose m'échappe !
Pas d'une grande utilitée me direz vous, mais moi j'aime bien tout comprendre... et là j'y arrive pas... :/

je récupère deux valeurs aléatoires avec un random.rage (de 1 à 9) et comme pour une grille de sudoku, je check mes valeurs x et y, ensuite la zone de x (de 1 à 3) et la zone de y (de 1 à 3) pour enfin avoir la zone globale (de 1 à 9) !!! Avec la boucle for ça marche niquel ! Mais je souhaiterai réussir avec ma boucle while :|

A savoir que c'est juste mon incrémentation de " zone++; " qui foire dans la boucle while.. mais autres données sont juste u_u

Code : Tout sélectionner

	static int		GetZone(int zone_x, int zone_y)
	{
		int zone = 1;
		int x = 1;
		int y = 1;
		
		while (y != nbr_zone_x)
		{
			while (x != nbr_zone_y)
			{
				if (x == zone_x && y == zone_y)[color=#FF0000];[/color]
					{
					print("zone x = "+zone_x);
					print("zone y = "+zone_y);
					print("zone = "+zone);
					return zone;
					}
					x++;
					zone++;
			}
			y++;
		}
		return 0;

/*
		int zone = 1;
		for( int y = 1; y <= nbr_zone_x; y++)
		{
			for( int x = 1; x <= nbr_zone_y; x++)
			{
				if( x == zone_x && y == zone_y )
				{
					print("zone x = "+zone_x);
					print("zone y = "+zone_y);
					print("zone = "+zone);
					return zone;
				}
				zone++;
			}
		}
		return 0;
*/
	}

}
Bref ci jamais quelqu'un à ce qui m'échappe... merci d'avance ! Moi je retourne chercher ;)

Edit : Comme je l'ai marqué en rouge... un ; après ma condition... u_u du coup faut que je bidouille encore un peu.. mais ça marche maintenant !
NDrew : je compare une zone de 3 par 3 sur un total de 9 par 9 comme une grille de sudoku en faite ;) (dans le but plus tard de pas instancier de joueurs dans la même zone au départ) du coup ce que tu m'as écris serai plus une sorte de factorisation nn ?
Dernière édition par Dump le 02 Oct 2014 09:52, édité 4 fois.

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Traduire un For en While

Message par NDrew » 01 Oct 2014 07:50

1ere chose, c'est probablement pas ton probleme mais c'est étrange a lire :

Code : Tout sélectionner

      while (y != nbr_zone_x)   //comparer des y et des z? :)
      {
         while (x != nbr_zone_y)
je n'ai pas vu le probleme dans ton while, mais je permet de te proposer une idée :

Code : Tout sélectionner

static int      GetZone(int zone_x, int zone_y){
    return zone_y *  nbr_zone_y + zone_x;
}
bonne continuation
Dernière édition par NDrew le 01 Oct 2014 09:15, édité 1 fois.

Dump
Messages : 4
Inscription : 29 Nov 2012 06:13

Re: Traduire un For en While

Message par Dump » 01 Oct 2014 08:55

Voici la solution... tout ça a cause d'un ";" u_u"

Code : Tout sélectionner

static int		GetZone(int zone_x, int zone_y)
	{
		int zone = 1;
		int x = 1;
		int y = 1;

		while (y <= 3)
		{
			while (x <= 3)
			{
					if (x == zone_x && y == zone_y)
					{
					print("zone = "+zone);
					return zone;
					}
					zone++;
					x++;
			}
			y++;
			x = 1;
		}
		return 0;

/*
		int zone = 1;
		for( int y = 1; y <= nbr_zone_x; y++)
		{
			for( int x = 1; x <= nbr_zone_y; x++)
			{
				if( x == zone_x && y == zone_y )
				{
					print("zone x = "+zone_x);
					print("zone y = "+zone_y);
					print("zone = "+zone);
					return zone;
				}
				zone++;
			}
		}
		return 0;
*/
	}
Merci quand même :)

Répondre

Revenir vers « Scripting »