| [résolu]probleme boucle for | |
|
|
Auteur | Message |
---|
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: [résolu]probleme boucle for Dim 26 Aoû 2012 - 19:51 | |
| bonsoir, je ne suis pas trés doué en programmation et j'ai écris le script si dessous mais il ne fonctionne pas correctement. je m'explique parfois rien ne ce passe à part l'animation du sprite et parfois l'action part mais ne s'arrête plus - Code:
-
{ var x_start, x_end;
x_start = x; //valeur de depart x sprite_index = attackSpecial; image_speed = 0.25; if !sound_isplaying(SndFX_Yeah)sound_play(SndFX_Yeah);
//begin if (image_index > 0) {[quote] if (image_xscale = -1) { x_end = x-96; //valeur d'arrivée x for (i=x; i>x_end; i-=3) { hspeed = -6; image_single = 1; left = 0; right = 0; } if (x_start <= x_end) {special = 0; hspeed = 0;} } if (image_xscale = 1) { x_end = x+96; //valeur d'arrivée x for (i=x; i<x_end; i+=3) { hspeed = +6; image_single = 1; left = 0; right = 0; } if (x_start >= x_end) {special = 0; hspeed = 0;} } } alarm[0]= 30; //end } merci d'avance pour l'aide que vous m'apporterai
Dernière édition par 65c816 le Mer 29 Aoû 2012 - 23:44, édité 1 fois |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 20:03 | |
| La ligne if (image_index>0) est inutile : quand tu lance le jeu en mode debug et que tu regarde la variable image_index d'un objet, elle est toujours supérieure a 0. Sinon je ne vois pas pourquoi rien ne se passe des fois ; si tu pouvais m'expliquer qu'est ce que doit faire ce script, peut-être que je comprendrai mieux. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 20:14 | |
| j'ai mis cette ligne car je souhaitai que la boucle ne démarre qu'à l'image 1 et reste sur l'image 1 (mon anim' ne comporte que 2 img). mon souhait serais que mon perso se déplace de x pixels/step jusqu’à atteindre 128 pixels de la position de départ. l'action se déclenche sur un appuie de touche mais de ce coté là ça fonctionne car même l'audio de l'action est lu systematiquement. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 20:19 | |
| Oui mais même avec 2 subimages la variable image_index n'évolue pas comme ca : 0,1,0,1,0,1,.... Mais comme ceci : 0,1,2,3,4,.... Donc il faut que tu détermine si image_index est impaire avec du modulo. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 20:39 | |
| |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 20:44 | |
| Ca retourne le reste d'une division : Tu fais if image_index mod 2 =1 { //la subimage est a 1}
(Dans des langages genre c++ tu fais variable%=2) |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:16 | |
| avec le modulo le son et l'anime se déclenche comme avant mais le deplacement non. sans la ligne - Code:
-
if image_index mod 2 =1 tout se déclenche mais ne s'arrete plus |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:23 | |
| Sûrement a cause de la boucle, vu que tu fais i+=3 et hspeed+=6, essaie d'imbriquer 2 boucles l'unes dans l'autre en faisant plusieurs fois i+=1 et hspeed+=1. Ca évitera qu'il aille trop loin. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:31 | |
| j'ai comme l'impression que la boucle ne fonctionne pas image_single n'est pas cencé afficher que l'image "x"? car hspeed se declenche mais pas - Code:
-
image_single = 1 |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:37 | |
| Je connais pas image_single et je peux pas voir la doc 8.1 (suis sur tablette avec la doc 6), désolé. Mais si hspeed marche et pas image_single, c'est que c'est pas un problème au niveau de la boucle mais au niveau de image_single |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:41 | |
| j'ai resolu partiellement mon soucis avec - Code:
-
for (i=x; i>x_end; i-=3) { image_speed = 0; image_index = 1; left = 0; right = 0; } le soucis c'est que le perso ne s’arrête toujours pas la boucle n'a t'elle pas pour but de s'arreter une fois i = x_end? une boucle while ne serait-elle pas plus adapté? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:49 | |
| Sinon avec un if, un for et un while : - Code:
-
if x<=x_max-vitesse { for(i=0;i<vitesse;i+=1) { x+=1 } } else if x<max_x { while(x<x_max) { x+=1 } }
|
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 21:51 | |
| Attention, je viens d'éditer mon post, iavait une erreur. Désolé. |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Dim 26 Aoû 2012 - 22:21 | |
| je laisse tombe pour ce soir trop fatigué et énervé pour continuer, merci pour m'avoir consacré du temps |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 20:17 | |
| la boucle fonctionne "bien" apparemment avec x+= 3 à la place de hspeed = +3 le soucis est que l' obj fait un saut direct à la position et non un deplacement regulier |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 20:23 | |
| Au tout début du code tu fais a=0, juste avant la boucle for, a=1 et dans la boucle for tu fais if a=0 x+=1 else exit() |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 21:14 | |
| ce que je ne pige pas c'est pourquoi quand x = x_end(x+96) cela ne 's’arrête pas car c'est ce que ça doit faire - Code:
-
for (i=x; i < x_end; i+=1) hspeed = +6; non? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 21:36 | |
| A la ligne suivante écrit hspeed=0 ; hspee, c'est comme speed, ca imprime une vitesse constante a l'objet (du moins je suppose, j'utilise jamai cette technique ; mais en principe ca doit être ca...) |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 22:12 | |
| la boucle for fonctionne comme une while? une fois fausse elle exécute après les crochets? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 23:07 | |
| la boucle while execute le code entre crochet tant que l'expression entre parenthèse est JUSTE ; la boucle for est divisée en 3 parties séparées par des points-virgules : 1) initialisation : i=0 2) condition : i<10 3) incrémentation (ou autres opérations) : i+=1
par exemple :
a="" for(i=0;i<10;i+=1) { a+=string(i)+"#" }
a la fin, si tu affiche a tu verra écrit les nombres de 1 à 10 (avec un saut de ligne entre) J'ai mis du temps à comprendre les boucles mais c'est indispensable !
|
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Lun 27 Aoû 2012 - 23:32 | |
| du coup ma for il ne faudrait pas la faire comme ça? - Code:
-
x_end = x-128; for (i=x; i>x_end; i-=1) { x = i; image_single = 1; } non? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [résolu]probleme boucle for Mar 28 Aoû 2012 - 8:40 | |
| Ouais, mais ca va tout faire d'un coup.... Il faut que tu rajoute une variable iteration au début qui est égale à la vitesse ; puis dans la boucle for tu fais iteration-=1 puis if itération <1 exit() |
|
| |
65c816 Très bonne participation
Messages : 148 Projet Actuel : Jeux retro Beathem'up all
| Sujet: Re: [résolu]probleme boucle for Mer 29 Aoû 2012 - 23:43 | |
| j'ai resolu mon probleme avec une entourloupe - Code:
-
{ //begin var x_start, x_end,;
view_object = noone ; x_start = x; x_end = ""; sprite_index = attackSpecial;
if !sound_isplaying(SndFX_Yeah)sound_play(SndFX_Yeah);
if image_index > 0 { //perso vers la droite if (image_xscale = 1) { x_end = view_xview+192; if x < x_end { for (i=x; i<x_end; i+=1) { image_speed = 0; image_single = 1; hspeed=+6; } } else {special = 0; hspeed=0; view_object = obj_Player1;} } //perso vers la droite if (image_xscale = -1) { x_end = view_xview+64; if x > x_end { for (i=x; i>x_end; i-=1) { image_speed = 0; image_single = 1; hspeed=-6; } } else {special = 0; hspeed=0; view_object = obj_Player1;} } } //end } après je ne sais pas si la boucle for est réellement utile car si ça ce trouve le code devrait fonctionner correctement juste avec les éléments des crochets de la boucle simplement dans ceux du if... en tous cas merci Térence68 de m'avoir apporté ton aide |
|
| |
Contenu sponsorisé
| Sujet: Re: [résolu]probleme boucle for | |
| |
|
| |
| [résolu]probleme boucle for | |
|