AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

 

 boucle

Aller en bas 
4 participants
AuteurMessage
K.marx
Petit bavard
K.marx


Messages : 56

boucle Empty
MessageSujet: boucle   boucle EmptyLun 27 Aoû 2012 - 23:07

Salut, je suis en trains d'apprendre le fonctionnement des boucles mais je rencontre quelque problèmes.

fleche_d j'ai essayé une simple boucle while :

while (x<800)
{a+=1}

seulement le jeu plante immédiatement, je suis obligé de fermer le programme depuis le gestionnaire des taches.

fleche_d Je n'ai pas compris l’intérêt de la boucle while.
quel est la différence entre :

while (x<800)
{a+=1}

et (dans un step):

if (x<800)
{a+=1}

fleche_d Je n'ai rien compris à la boucle for !! rire

Si quelqu'un pouvais un peut éclairer ma lanterne ce serrais cool.
Et par pitié ne me renvoyez pas vers ce lien https://cbna.forumactif.com/t10923-apprendre-le-gml-4-les-boucles
Le tuto est bien mais il n'est pas très précis pour certains points. Merci d'avance.

Revenir en haut Aller en bas
K.marx
Petit bavard
K.marx


Messages : 56

boucle Empty
MessageSujet: Re: boucle   boucle EmptyLun 27 Aoû 2012 - 23:17

J'ai une petite interrogation que je me pose également,
est ce que le step est une sorte de boucle ? je veux dire est ce que en programmation classique (c#, java...) on est obligé d'utiliser des boucles à chaque fois que l'on veux que l'action ce répète ?
Revenir en haut Aller en bas
BigBoris
Bavard



Messages : 93

boucle Empty
MessageSujet: Re: boucle   boucle EmptyLun 27 Aoû 2012 - 23:33

Citation :
while (x<800)
{a+=1}


En fait ta boucle tourne a l'infini, car X ne dépasse jamais 800, il faudrait que tu remplaces a+=1; par x+=1;

La boucle while est très simples a comprendre, elle exécute un bloque d'instruction tant que la condition est vrai. Donc tant que x est plus petit que 800 la boucle exécutera ce qui ce trouve entre les { } qui suive while (x<800).

La boucle for est différente mes très similaires

for (instruction1; Expression instruction2;) { instruction3 }

La boucle for fonctionne comme suit

Étape1 elle initialise la boucle for en exécutant l'instruction 1

Étape2 ensuite elle vérifie si l'expression est vraie et si oui elle exécute l'instruction3.

Étape3 Elle exécute l'instruction 2

Étape 4 et ça recommencent à partir de l'étape 2 tant que l'expression est vraie.


En gros

for (x=1; x<800; x+=1;)
{

}


Étape1 ont défini la variable x avec 1

Étape2 si x est plus petit que 800 on exécute ce qui ce trouve entre les { }

Étape3 on augmente la variable x de +1

Étape 4 et ça recommencent à partir de l'étape 2 tant que l'expression est vraie.



Je c'est pas si j'ai pu t'aider j'ai essayer d'être le plus claire possible, mes je n'est aucun talent pour expliquer aux autres.



Citation :

J'ai une petite interrogation que je me pose également,
est ce que le step est une sorte de boucle ? je veux dire est ce que en programmation classique (c#, java...) on est obligé d'utiliser des boucles à chaque fois que l'on veux que l'action ce répète ?

Les steps c'est quelquechose de totalement différent, les boucles son très présente et vitale en programmation et ce peut importe le language de programmation.
Revenir en haut Aller en bas
K.marx
Petit bavard
K.marx


Messages : 56

boucle Empty
MessageSujet: Re: boucle   boucle EmptyLun 27 Aoû 2012 - 23:46

ok merci j'ai fait while (a<800) {a+=1} et ça ma permis de comprendre, je pensait que while testait step par step si la condition était vrais ou pas alors que tous ce fait en un step.
Tous est plus clair à présent, merci pour l'explication de la boucle for c'est encore un peu flou mais je pense que je vais pas tarder à comprendre. gnii

edit: par contre je n'arrive pas à trouver une utilité à la boucle while.
Revenir en haut Aller en bas
BigBoris
Bavard



Messages : 93

boucle Empty
MessageSujet: Re: boucle   boucle EmptyLun 27 Aoû 2012 - 23:56

Citation :
ok merci j'ai fait while (a<800) {a+=1} et ça ma permis de comprendre, je pensait que while tester step par step si la condition était vrais ou pas alors que tous ce fait en un step.
Tous est plus clair à présent, merci pour l'explication de la boucle for c'est encore un peu flou mais je pense que je vais pas tarder à comprendre. gnii


Évite le plus possible d'utiliser des boucles dans un steps, ce n’est pas l'idéal niveau optimisation. Je c'est pas si tu a compris que les steps exécutent tout ce que tu lui dis a chaque fois ? Par exemple si ta room est configuré a speed 60 elle exécutera 60 fois t'es instruction a la seconde !!!




Citation :
par contre je n'arrive pas à trouver une utilité à la boucle while.

Alors la je peux pas trop t'aider si t'n’arrives pas a comprendre l'utilité d'une boucle.... Dans mon projet actuel j'ai programmé un système qui permet de générer l'intérieure d'un vaisseau spatial aléatoirement. Par exemple pour ajouter des pièces dans le vaisseau je fais tourné une boucle qui crée des chambres aléatoirement tant qu’a la limite que j'ai fixée n'est pas atteinte. J'ai aussi une boucle a l'intérieure de cette boucle qui vérifie chaque case ou seras créé la chambre pour éviter quel ne rentre en conflit avec un crambe déjà créer.

Les boucles son utile pour beaucoup de choses, il faut simplement éviter de créer des boucles infinie ou trop grosse qui aurais pour effet de figé ton jeu.


Dernière édition par BigBoris le Mar 28 Aoû 2012 - 0:05, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_


Messages : 9180
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:01

Alors, la boucle for sert a répéter une action un certain nombre de fois, le nombre de fois étant connu d'avance, la boucle while elle si tu ne le connais pas.

Par exemple, tu veux parcourir un tableau de 100 cases, tu utilise une boucle for car tu sais qu'il faudra itérer 100 fois.
for(i=0; i<100; i+=1) traiter(tableau[i])

Maintenant si tu cherche une position libre dans ta room par exemple, tu ne sauras pas combien de fois il faudra répéter ce code, il faut donc utiliser une boucle while.
while(!place_free(x, y)) { x = random(640) y = random(480) }



Et non, on évite pas les boucles dans les step. On évite de faire un code lourd non optimisé..
Si par exemple tu veux afficher une grille dynamiquement bah double boucle dans un draw.
Les boucles ça sert surtout a éviter d'écrire plusieurs fois un même code, une même action. C'est un peu comparable aux scripts dans ce sens la, mais leur vitesse ne dépend que de ta façon de coder.
Ce qu'il faut éviter c'est de répéter des actions inutilement, mais ça c'est pas valable que pour les boucles :p

_________________
boucle Runningpotato1boucle TvF6GED boucle MdetltS
Revenir en haut Aller en bas
K.marx
Petit bavard
K.marx


Messages : 56

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:10

Merci à vous deux, je comprend mieux, mais il me faudra de l'entrainement pour bien les maitriser je pense.
Revenir en haut Aller en bas
BigBoris
Bavard



Messages : 93

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:10

Citation :
Et non, on évite pas les boucles dans les step. On évite de faire un code lourd non optimisé..
Si par exemple tu veux afficher une grille dynamiquement bah double boucle dans un draw.
Les boucles ça sert surtout a éviter d'écrire plusieurs fois un même code, une même action. C'est un peu comparable aux scripts dans ce sens la, mais leur vitesse ne dépend que de ta façon de coder.
Ce qu'il faut éviter c'est de répéter des actions inutilement, mais ça c'est pas valable que pour les boucles :p


Ce que je voulais dire c'est d'éviter de foutre des boucles dans un steps si c'est pas nécessaire, exécuter des boucles inutilement a chaque steps c'est la meilleure façon de flinguer les performances de ton jeu.


Dernière édition par BigBoris le Mar 28 Aoû 2012 - 0:16, édité 1 fois
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:15

Ben, quand tu as besoin d'une boucle, tu utilises une boucle... Ce n'est pas la boucle qui prendra du temps proce (pas plus qu'un if en fait), c'est si tu exécutes des actions trop lentes ou redondantes un trop grand nombre de fois.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
BigBoris
Bavard



Messages : 93

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:27

Citation :
Ben, quand tu as besoin d'une boucle, tu utilises une boucle...

Quand tu as besoin d'une boucle tu l'utilises c'est pourtant évidant et je n’ai jamais dit le contraire.


Citation :
Ce n'est pas la boucle qui prendra du temps proce (pas plus qu'un if en fait), c'est si tu exécutes des actions trop lentes ou redondantes un trop grand nombre de fois.

J'ai simplement essayé de lui expliquer de ne pas faire l'erreur que bien des débutants font en plaçant une boucle à chaque step, alors qu'il aurait très bien pu exécuter la boucle seulement quand il en a vraiment de besoin. Au lieu de la faire tourner en boucle dans un step inutilement et de répéter des instructions qui vont bouffer des ressources pour rien.


Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:35

Sois plus général alors, comme je l'ai dit une boucle en elle-même ne consomme rien.

Par contre, effectivement il vaut mieux éviter d'effectuer tout traitement lourd à chaque frame, ce qui arrive souvent avec les fonctions de ressources (chargement de fichiers) et les initialisations mal placées (comme les surface_create()).

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
BigBoris
Bavard



Messages : 93

boucle Empty
MessageSujet: Re: boucle   boucle EmptyMar 28 Aoû 2012 - 0:57

Citation :
Sois plus général alors, comme je l'ai dit une boucle en elle-même ne consomme rien.

Comme je les dis plus haut, je n'est aucun talent pour expliquer, c'est d'ailleurs une des raisons qui font que j'aide très peu les gens sur le forum alors que je connais très bien la réponse.
Revenir en haut Aller en bas
Contenu sponsorisé





boucle Empty
MessageSujet: Re: boucle   boucle Empty

Revenir en haut Aller en bas
 
boucle
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Boucle for
» boucle for ...
» Musique en boucle
» While, do, Boucle infinie...
» Boucle for [Résolu]

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: