IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

[flash8 AS2] pb de boucles if imbriquees


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut [flash8 AS2] pb de boucles if imbriquees
    Bonjour !

    je cherche a programmer une animation simulant une course de voitures (pour pouvoir l'utiliser en strategie de course durant une vraie course).
    je cherche donc a faire tourner mes 4 voitures, blue, green, purple et brown a des vitesses differentes, dependant de leur chrono reel au tour : mission accomplie.

    mais je cherche aussi a les faire rester derriere la Safety Car quand celle ci sort (puisqu'interdiction de doubler durant une SC)
    j'ai donc fait un truc bien bourrin (car je ne savais pas faire autrement ) ou j'ai plusieurs boucles if imbriquees, genre si la voiture blue touche la SC alors, ... et si la voiture verte touche la voiture bleue qui touche deja la SC alors, ...

    mais le probleme c'est que ca ne marche pas et ca marche pas de facon bizarre...
    Si la bleue touche la SC en 1ere, pas de probleme, mais par exemple qd la verte touche la blue deja derriere la SC, la vitesse de la verte ne change pas, alors que flash effectue bien la boucle if concernee car un trace place dans cette boucle est effectue...

    enfin voila, je ne sais pas si je suis tres claire... j'espere qd meme !

    voici donc mon code si quelqu'un a une solution, je suis preneuse


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    var tb:Number = 0;
    var tg:Number = 0;
    var tp:Number = 0;
    var tbr:Number = 0;
    var tSC:Number = 0;
    var bluerotation:Number = 0;
    var greenrotation:Number = 0;
    var brownrotation:Number = 0;
    var purplerotation:Number = 0;
    var SafetyCar:Boolean = false;
    var BlueHitSC:Boolean = false;
    var GreenHitSC:Boolean = false;
    var PurpleHitSC:Boolean = false;
    var BrownHitSC:Boolean = false;
    //
    onEnterFrame = function () {
    	    if (tbs.text!="", tbm.text!="", tbms.text!="") {
    		tb = parseFloat(tbs.text)+(parseFloat(tbm.text))*60+(parseFloat(tbms.text))/1000;
    	}
    	if (tgs.text!="", tgm.text!="", tgms.text!="") {
    		tg = parseFloat(tgs.text)+(parseFloat(tgm.text))*60+(parseFloat(tgms.text))/1000;
    	}
    	if (tbrs.text!="", tbrm.text!="", tbrms.text!="") {
    		tbr = parseFloat(tbrs.text)+(parseFloat(tbrm.text))*60+(parseFloat(tbrms.text))/1000;
    	}
    	if (tps.text!="", tpm.text!="", tpms.text!="") {
    		tp = parseFloat(tps.text)+(parseFloat(tpm.text))*60+(parseFloat(tpms.text))/1000;
    	}
    	bluerotation = 360/tb;
    	greenrotation = 360/tg;
    	brownrotation = 360/tbr;
    	purplerotation = 360/tp;
                 SCrotation = 360/tSC;
    	if (SafetyCar == false) {
    		blue._rotation += bluerotation;
    		green._rotation += greenrotation;
    		purple._rotation += purplerotation;
    		brown._rotation += brownrotation;
    	}
    	if (tSCs.text!="", tSCm.text!="", tSCms.text!="") {
    		tSC = parseFloat(tSCs.text)+(parseFloat(tSCm.text))*60+(parseFloat(tSCms.text))/1000;
    		safety._rotation += SCrotation;
    	}
    	if (SafetyCar == true) {
    		if (GreenHitSC == false and PurpleHitSC == false and BrownHitSC == false) {
    			if (safety.hitTest(blue)) { //boucle effectuee correctement
    				BlueHitSC = true;
    				blue._rotation += SCrotation;
    				green._rotation += greenrotation;
    				purple._rotation += purplerotation;
    				brown._rotation += brownrotation;
    				if (blue.hitTest(green)) { //boucle effectuee bizarrement car boucle effectuee mais changement de vitesse non effectif...
    					green._rotation += SCrotation;
    					purple._rotation += purplerotation;
    					brown._rotation += brownrotation;					                        if (green.hitTest(purple)) {
    						purple._rotation += SCrotation;
    						brown._rotation += brownrotation;
    						if (purple.hitTest(brown)) {
    							brown._rotation += SCrotation;
    						}
    					}
    					if (green.hitTest(brown)) {
    						brown._rotation += SCrotation;
    						purple._rotation += purplerotation;
    						if (brown.hitTest(purple)) {
    							purple._rotation += SCrotation;
    						}
    					}
    				}
    				if (blue.hitTest(purple)) {
    					purple._rotation += SCrotation;
    					green._rotation += greenrotation;
    					brown._rotation += brownrotation;
    					if (purple.hitTest(green)) {
    						green._rotation += SCrotation;
    						brown._rotation += brownrotation;
    						if (green.hitTest(brown)) {
    							brown._rotation += SCrotation;
    						}
    					}
    					if (purple.hitTest(brown)) {
    						brown._rotation += SCrotation;
    						green._rotation += greenrotation;
    						if (brown.hitTest(green)) {
    							green._rotation += SCrotation;
    						}
    					}
    				}
    				if (blue.hitTest(brown)) {
    					brown._rotation += SCrotation;
    					green._rotation += greenrotation;
    					purple._rotation += purplerotation;
    					if (brown.hitTest(purple)) {
    						purple._rotation += SCrotation;
    						green._rotation += greenrotation;
    						if (purple.hitTest(green)) {
    							green._rotation += SCrotation;
    						}
    					}
    					if (brown.hitTest(green)) {
    						green._rotation += SCrotation;
    						purple._rotation += purplerotation;
    						if (green.hitTest(purple)) {
    							purple._rotation += SCrotation;
    						}
    					}
    				}
    			} else {
    				blue._rotation += bluerotation;
    			}
    		}
    		if (BlueHitSC == false and PurpleHitSC == false and BrownHitSC == false) {
    			if (safety.hitTest(green)) {
    				GreenHitSC = true;
    				green._rotation += SCrotation;
    			} else {
    				green._rotation += greenrotation;
    			}
    		}
    		if (GreenHitSC == false and BlueHitSC == false and BrownHitSC == false) {
    			if (safety.hitTest(purple)) {
    				PurpleHitSC = true;
    				purple._rotation += SCrotation;
    			} else {
    				purple._rotation += purplerotation;
    			}
    		}
    		if (GreenHitSC == false and PurpleHitSC == false and BlueHitSC == false) {
    			if (safety.hitTest(brown)) {
    				BrownHitSC = true;
    				brown._rotation += SCrotation;
    			} else {
    				brown._rotation += brownrotation;
    			}
    		}
    	}
    };

    je precise que je n'ai prevue que les cas pour lesquels blue touche la SC en 1ere, si ca ca marche, le reste sera facile a faire apres normalement.

    Merci bcp d'avance pour vos reponses !!!

    P.S.: excusez moi pour les accents, je suis en GB actuellement et les claviers qwerty connaissent pas les accents...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Par défaut
    Salut

    Je ne vois pas comment t'aider là, je ne trouve pas le problème, mais je peux te conseiller une chose pour commencer et y voir plus clair : tu fais très souvent la même série d'action dans ton script, tu pourrais faire une fonction (avec variables) pour simplifier le tout... Non ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Par défaut
    merci pour ta reponse !

    mince tu trouves pas non plus... franchement je ne comprend pas pourquoi ca ne marche pas alors que c'est les meme lignes de code partout ou presque. et puis pourquoi effectuer la 2eme moitie d'une boucle if mais pas la 1ere ?
    mon flash est fou !

    mais les fonctions oui c'est une bonne idee, je vais essayer de faire ca. mais essayer car en theorie ca s'implifie le code mais pour une debutante ca complique !
    je m'y met !
    merci encore

    P.S.: si quelqu'un trouve le bug je suis preneuse qd meme, ne serait ce que par curiosite

Discussions similaires

  1. [Batch] Boucle for imbriquee dans une boucle if qui refuse de fonctionner
    Par Egan69 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 27/06/2013, 19h30
  2. Réponses: 0
    Dernier message: 08/09/2009, 18h47
  3. tableaux dynamiques ds des boucles FOR imbriquees
    Par areuh_fr dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 13/12/2006, 11h12
  4. [C# 1.1]Boucles foreach imbriquees
    Par Nip dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/04/2006, 16h35
  5. Réponses: 18
    Dernier message: 08/11/2005, 08h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo