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

ti_boby Messages postés 122 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
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 3452 Statut Membre 369
 
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 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
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 122 Statut Membre 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
Breub62 Messages postés 3452 Statut Membre 369
 
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 122 Statut Membre 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
Breub62 Messages postés 3452 Statut Membre 369
 
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 3452 Statut Membre 369
 
http://www.greyc.ensicaen.fr/ensicaen/CoursEnLigne/AlgoTri.pdf
0
ti_boby Messages postés 122 Statut Membre 1
 
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 3452 Statut Membre 369
 
De rien bonne continuation...
;-)
0
ti_boby Messages postés 122 Statut Membre 1
 
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 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
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