Jeux de dés, calcule de score ...

Bonjour,

Je suis en train de réaliser un petit programme de jeux de dés, en flash (AS3)

il y a trois dés, et donc trois valeurs différentes possible entre 1 et 6;

Jusque là tout va bien.

Je pêche surtout, sur la fonction qui va permettre de calculer les scores.

pour les combinaisons triples : (ex : 6 ; 6 ; 6 )

c'est assez simple j'ai mis :

function calculScore(valeur1, valeur2, valeur3) { 
        var scoreRes:Number = 1; // resultats 
  
        //Combinaison triple... 
        if( (valeur1 == valeur2) && (valeur2 == valeur3) ) { 
                scoreRes = valeur3; 
                if (valeur3 == "1") { scoreRes = 6; } 
        } 
 }
 


Mais pour des combinaisons spécial tel que 2 ; 2 ; 1 ou 1 ; 4 ; 1 ou encore 3 ; 4 ; 5 (suite) ??
je ne trouve pas la condition a effectuer ! ! !

un peu d'aide s'il vous plait ?

7 réponses

  1. Tu peux expliquer le système de notation stp? Parce que là si j'ai bien compris, si tu as trois 1 tu as 6 points?
    0
    1. Contributeur
      Bonjour,

      Je te conseille avant tout de trier l'ordre de tes dés par ordre croissant.
      Ainsi les conditions seront plus simples.
      Par exemple pour le triple, ça deviendra : if (valeur1==valeur3)
      Pour la suite, il faut que la différence entre valeur1 et valeur2 soit 1 et pareil entre valeur 1 et valeur 3.
      Etc.

      Cdlt,
      0
      1. oui si tu veux ^^

        les combinaisons triple d'abord :

        triple 2 = 2 pts
        triple 3 = 3 pts
        triple 4 = 4 pts
        .
        .
        etc
        sauf

        triple 1 = 6 pts

        les combinaisons avec le double 1 :

        ex: 1 ; 3 ; 1 = 3 pts
        ex: 1 ; 4 ; 1 = 4 pts
        ex: 1 ; 5 ; 1 = 5 pts ....... etc

        sauf 1 ; 1 ; 1 qui revient a une combinaison tripe donc 6 pts.

        les combinaisons de type suite :

        ex ; 1 ; 2 ; 3..... ou 2 ; 3 ; 4 ...... ou encore 3 ; 4 ; 5

        nombre de pts équivaut au chiffre du centre de la suite, ici 2 puis 3 puis 4.

        enfin les combinaisons spéciales :

        nenette : 2 ; 2 ; 1 => pénalité de jeu
        Le 421 : 4 ; 2 ; 1 => 12 pts

        Par défaut, Si on ne fait aucunes des ces combinaisons on a 1 pts...

        Voila les combinaisons... je pense que certain auront reconnu le jeu bien qu'il existe plusieurs variante ;-).
        0
        1. Oui en effet je reconnais mais j'ai jamais su trop compter les points.
          Donc là je te conseille de faire comme t'a dit fiddy et de commencer à trier tes dés par ordre croissant ou décroissant comme tu veux et après tu pourras plus facilement faire tous les tests. en faisant ça ça divise le nombre de tests par 3...
          Bon courage...
          0
          1. Ok, mais je ne connais pas de methode/function qui tire les valeur par ordre croissant... lol

            vous pouvez m'aider ?

            Dois-je les mettre dans un array ?
            0
            1. Sachant que tu n'as que 3 valeurs tu peux créer une fonction avec 3 paramètres qui te les retourne dans 3 variables ou dans un tableau. Si tu n'utilise pas de tableau tu peux utiliser une variable temporaire...
              0
            2. http://www.greyc.ensicaen.fr/ensicaen/CoursEnLigne/AlgoTri.pdf
              0
            3. OK j'ai pigée ce que tu veux dire... je me met au boulot de suite merci...

              Merci bcp ;-)
              0
            4. De rien bonne continuation...
              ;-)
              0
          2. Voila j'ai réussit a faire ma fonction de trie...

            Bon bien sur je n'y connai pas grand chose en algorythme.... donc c'est pas surper optimal comme code...

            Ya surmment beaucoup mieux, avec un boucle je pense qu'on peux faire bien mieux mais je vois pas comment faire....

            en attendant celui ci marche très bien... mais reste limiter a 3 valeurs.

            Si quelqu'un a mieux a proposer je suis tout ouïe :

            function trieValeurs(valeur1,valeur2,valeur3) {
            	var pVariable:Number; // petite valeur
            	var mVariable:Number; // moyenne valeur
            	var gVariable:Number; // grande valeur
            	
            	// on compare les deux premières valeurs
            	if (valeur1 <= valeur2) { 
            		pVariable = valeur1;
            		mVariable = valeur2;
            	}
            	else{
            		pVariable = valeur2;
            		mVariable = valeur1;
            	}
            	//la plus petite est ds pVariable la plus grande dans mVariable
            	// si elle sont egale peut importe !
            	
            	
            	//on compare avec la troisième valeur
            	if ( valeur3 <= pVariable ) {
            		gVariable = mVariable;
            		mVariable = pVariable;
            		pVariable = valeur3;
            // si elle est plus grande que la précédente plus petite, on décale toute les valteur et on la met en pVariable.
            // si elle est égale a la plus petite : idem
            	}						
            	else if ( valeur3 >= mVariable ) {
            		gVariable = valeur3;
            // sinon si elle est plus grande que le plus grande précédente, on la place dans gVariable.
            // si elle est égale : idem
            	}
            	else{
            //enfin, sinon c'est qu'elle se situe entre les deux.
            		gVariable = mVariable;
            		mVariable = valeur3;
            	}
            	
            	trace(valeur1+" ; "+valeur2+" ; "+valeur3);
            	trace(pVariable+" ; "+mVariable+" ; "+gVariable);
            	
            }
            
            0
            1. Contributeur
              Tu n'as pas encore le réflexe de fonction.
              Par exemple, tu aurais dû faire une fonction "echanger" pour échanger le contenu des variables. Ca aurait simplifié considérablement ton code.

              Par exemple :
              function echanger(a,b) {
                 var c::Number;
                 c=a;
                 a=b;
                 b=c;
              }
              
              function trieValeurs(valeur1,valeur2,valeur3) {
                 if (valeur1>valeur2) { echanger(valeur1, valeur2); }
                 if (valeur1>valeur3) { echanger(valeur1, valeur3); }
                 if (valeur2>valeur3) { echanger(valeur2, valeur3); }
              }
              

              Je n'ai pas testé le code, et il y a peut-être des erreurs puisque je n'ai jamais fait d'ActionScript. Mais on voit que c'est plus propre ;-)))
              0