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

Fermé
ti_boby Messages postés 103 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 27 octobre 2019 - Modifié par ti_boby le 16/07/2010 à 14:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 juil. 2010 à 15:34
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 ?


A voir également:

7 réponses

Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
16 juil. 2010 à 14:07
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 juil. 2010 à 14:20
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
ti_boby Messages postés 103 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 27 octobre 2019 1
Modifié par ti_boby le 16/07/2010 à 14:25
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
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
16 juil. 2010 à 14:27
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ti_boby Messages postés 103 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 27 octobre 2019 1
16 juil. 2010 à 14:29
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
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
16 juil. 2010 à 14:32
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
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
16 juil. 2010 à 14:34
http://www.greyc.ensicaen.fr/ensicaen/CoursEnLigne/AlgoTri.pdf
0
ti_boby Messages postés 103 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 27 octobre 2019 1
16 juil. 2010 à 14:34
OK j'ai pigée ce que tu veux dire... je me met au boulot de suite merci...

Merci bcp ;-)
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
16 juil. 2010 à 14:35
De rien bonne continuation...
;-)
0
ti_boby Messages postés 103 Date d'inscription mardi 14 juillet 2009 Statut Membre Dernière intervention 27 octobre 2019 1
16 juil. 2010 à 15:20
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 juil. 2010 à 15:34
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