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 :

Probléme de calcul


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 30
    Par défaut Probléme de calcul
    Bonjour le forum

    je suis en train de réaliser un jeu style incollable...

    L'utilisateur à une question si il choisit la bonne réponse il à +1 et si il choisit une mauvaise il à -1 (super original )

    A la fin j'aimerai voir combien de point il à marqué :ca c le cadre ()

    Sur mes cases à cocher j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    clta_mc.a_mc.onRelease = function() {
    	clta_mc.a_mc.gotoAndPlay(2);
    	clicA++;
    	resa_txt = clicA;
    	clta_mc.c_mc.enabled = false;
    };
    clta_mc.b_mc.onRelease = function() {
    	clta_mc.b_mc.gotoAndPlay(2);
    	clicA--;
    	resa_txt = clicA;
    	clta_mc.b_mc.enabled = false;
    };
    //etc...
    Je stock dans un champ text le résultat (nombre de point) de chaque questions

    Pour calculer chacun des champs j'ai ce code
    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
     
    clic = 0;
     
    function calcul(pRes) {
    	pResA = Number(resa_txt.text);
    	if (isNaN(pResA)) {
    		pResA = 0;
    	}
    	pResB = Number(resb_txt.text);
    	if (isNaN(pResB)) {
    		pResB = 0;
    	}
    	pResC = Number(resc_txt.text);
    	if (isNaN(pResC)) {
    		pResC = 0;
    	}
    	pResD = Number(resd_txt.text);
    	if (isNaN(pResD)) {
    		pResD = 0;
    	}
    	pResE = Number(rese_txt.text);
    	if (isNaN(pResE)) {
    		pResE = 0;
    	}
    a = (pResA+pResB+pResC+pResD+pResE);
    	return (a);
    Sur la dernière fiche du jeux l'utilisateur à un bouton qui lui permet de voir son score final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    score_mc.onRelease = function() {
    	pRes = calcul(resa_txt.text, resb_txt.text, resc_txt.text, resd_txt.text, rese_txt.text)
    	res_txt.text = pRes;
    }
    Vous vous en douterez ça ne marche pas, inlassablement je me retrouve avec un score final avec 0

    Quelqu'un peut m'aider ou me conseiller ça serait super sympa ???

  2. #2
    Membre éclairé
    Homme Profil pro
    Concepteur multimédia
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur multimédia
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Par défaut
    Salut,

    Pour commencer, un petit conseil : quand on s'engage à faire des boutons identiques, ou de multiples clips qui se ressemblent, qui se nomment quasiment de la même manière et sur lesquels on va devoir coder des choses, il convient de les nommer avec des chiffres, car c'est beaucoup, mais vraiment beaucoup plus simple pour y accéder en code par la suite dans une boucle.

    Première étape, les cases à cocher :

    Tes boutons par exemple, je les nommerai clt1, clt2, clt3...
    Et pour chaque bouton, je transformerais ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Code du bouton juste 
    clicA++;
    resa_txt = clicA;
    // Code du bouton faux
    clicA--;
    resa_txt = clicA;
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // On stocke dans clta la bonne réponse directement après avoir cliqué
    // On met donc 1 ou -1 selon que le bouton sur lequel on a cliqué est le bon ou pas
    //
    // Cette ligne s'insère dans le bouton juste
    this._parent.reponse = 1;
    // Cette ligne s'insère dans le bouton faux
    this._parent.reponse = -1;
    Le bouton donne au final (pour le bouton juste) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    clt1.a_mc.onRelease = function() {
    	// this ici correspond à clt1.a_mc... 
    	// Une manière plus rapide de faire référence au clip appelant la fonction
    	this.gotoAndPlay(2);
    	this.enabled = false;
    	// On stocke la réponse directement dans clt1
    	this._parent.reponse = 1;
    };
    Deuxième étape, la récupération et l'affichage du score :

    Une fois que tu as nommé tes clips avec un chiffre, tu vas pouvoir accéder à leurs propriétés dans une boucle...

    Ainsi, on peut simplifier la fonction de calcul des scores et ajouter des questions ou en enlever facilement, et utiliser le retour de fonction pour l'affichage final.

    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
    // Fonction qui va calculer le score final, retourne un chiffre.
    // Prend en paramètre le nombre total de questions (pour les besoins de la boucle)
    function calcul(nombreQuestions):Number {
    	var resultatFinal:Number = 0;
    	// Boucle qui va parcourir toutes les questions
    	for (var i:Number = 1; i <= nombreQuestions; i++) {
    		// On donne un nom à la question en cours pour que ce soit plus lisible
    		var questionEnCours:MovieClip = this["clt" + i];
    		// Si une réponse a été donnée on doit avoir 1 ou -1.
    		// Si c'est le cas, on l'ajoute au résultat final à chaque itération.
    		//
    		// Si ce n'est pas un chiffre, c'est peut-etre que reponse n'a pas été définie
    		// On laisse donc resultatFinal tel qu'il est sans rien ajouter ni retrancher.
    		if (!isNaN(questionEnCours.reponse)) {
    			resultatFinal += questionEnCours.reponse;
    		}
    	}
    	//
    	return resultatFinal;
    }
     
    // Lors de l'appui sur le bouton de score
    score_mc.onRelease = function() {
    	// On utilise le retour de la fonction calcul() que l'on affiche
    	res_txt.text = calcul(5);
    };
    Je décline toute responsabilité dans l'efficacité du code joint et dans son bon fonctionnement. Je ne me suis pas amusé à créer les clips, les boutons pour tester. Il y aura peut-être un truc ou deux à revoir et à modifier pour que tout fonctionne sur ton projet.

    De plus, je saute délibérément toute tentative d'optimisation (enfin selon mon optimisation, qui n'est pas forcément la meilleure hein... ) du code au niveau des boutons justes et faux. Ce n'est pas le sujet et mérite un sujet à part entière.

Discussions similaires

  1. Problème de calcule en SQL !
    Par FilipeVV dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/09/2005, 11h45
  2. Problème de calcul matricielle
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 29/06/2005, 21h45
  3. problème de calcul des normales par sommet
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/01/2005, 13h42
  4. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  5. Problème de calcul unix_timestamp
    Par petit_stagiaire dans le forum Administration
    Réponses: 2
    Dernier message: 28/04/2004, 15h27

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