421 (titre trop court)

Soyez le premier à donner votre avis sur cette source.

Vue 8 433 fois - Téléchargée 244 fois

Description

C'est le jeu du 421 sur ordinateur.

Source / Exemple :


#include <iostream>
#include <vector>

using namespace std;

vector <int> lancer_des() {
vector <int> des;
for(int i(0);i!=3;++i) {
int de((rand()%6)+1);
des.push_back(de);
}

/*Le programme tri les des par ordre croissant*/

sort(des.begin(),des.end());
return des;
}

int points(vector <int> des) {
int pts(0);

/*
Combinaisons rapportant des points + nombre de points :

 - Speciales :

  - 111 : 9
  - 222 : 2
  - 333 : 3
  - 444 : 4
  - 555 : 5
  - 666 : 6
  - 112 : 2
  - 113 : 3
  - 114 : 4
  - 115 : 5
  - 116 : 6
  - 122 : 4
  - 421 : 10

 - Tierces :

  - 123 : 2
  - 234 : 2
  - 345 : 2
  - 456 : 2

  • /
if((des[0]==des[1])&&(des[1]==des[2])) { if(des[0]==1) pts=9; else pts=des[0]; } else { if((des[0]==des[1])&&(des[0]==1)) pts=des[2]; if((des[0]+1==des[1])&&(des[1]+1==des[2])) pts=2; if((des[0]==1)&&(des[1]==2)&&(des[2]==4)) pts=10; if((des[0]==1)&&(des[1]==2)&&(des[2]==2)) pts=4; } return pts; } void jouer421() { /* Le 421, ce joue en 2 etapes : - la charge (le jeu suivant), but : - essayer de ne pas obtenir de pions - la decharge, but : - se debarrasser de tous ces pions GAGNANT : Le premier qui n'a plus de pions.
  • /
/*Pions du joueur1*/ int nbpions1(0); /*Pions du joueur2*/ int nbpions2(0); /*Pions restants*/ int nbpionsrestants(21); for(int fin(0);fin!=1;) { cout <<"\n\n\nAppuyer sur Entree pour lancer les des"; cin.get(); vector <int> des_jo1(lancer_des()); vector <int> des_jo2(lancer_des()); int pts_jo1(points(des_jo1)); int pts_jo2(points(des_jo2)); if((pts_jo1==pts_jo2)&&(pts_jo2==0)) { /*Au 421 le joueur qui,*/ /*une fois les resultats tries par ordre decroissant et si personne n'a fait de combinaisons gagnantes,*/ /*obtient le plus grand score en un lance gagne un point.*/ int pts_jo1temp(des_jo1[2]*100+des_jo1[1]*10+des_jo1[0]); int pts_jo2temp(des_jo2[2]*100+des_jo2[1]*10+des_jo2[0]); if(pts_jo1temp>pts_jo2temp) pts_jo1=1; if(pts_jo1temp<pts_jo2temp) pts_jo2=1; } /*Le perdant prend des pions*/ int pionsaj1(0); int pionsaj2(0); if(pts_jo1>pts_jo2) { if(nbpionsrestants<pts_jo1-pts_jo2) { pionsaj2=nbpionsrestants; nbpions2+=nbpionsrestants; nbpionsrestants-=nbpionsrestants; } else { pionsaj2=pts_jo1-pts_jo2; nbpions2+=pts_jo1-pts_jo2; nbpionsrestants-=pts_jo1-pts_jo2; } } if(pts_jo1<pts_jo2) { if(nbpionsrestants<pts_jo2-pts_jo1) { pionsaj1=nbpionsrestants; nbpions1+=nbpionsrestants; nbpionsrestants-=nbpionsrestants; } else { pionsaj1=pts_jo2-pts_jo1; nbpions1+=pts_jo2-pts_jo1; nbpionsrestants-=pts_jo2-pts_jo1; } } cout <<"\n\n\nJoueur 1 :"; cout <<"\nDes : "; for(int i(des_jo1.size()-1);i!=-1;--i) { cout <<des_jo1[i]; if(i!=0) cout <<", "; } cout <<"\nPions : "<<nbpions1<<"\n( + "<<pionsaj1<<")\n"; cout <<"\n\nJoueur 2 :"; cout <<"\nDes : "; for(int j(des_jo2.size()-1);j!=-1;--j) { cout <<des_jo2[j]; if(j!=0) cout <<", "; } cout <<"\nPions : "<<nbpions2<<"\n( + "<<pionsaj2<<")\n"; cout <<"\n\nPions restants : "<<nbpionsrestants; if(nbpionsrestants==0) { fin=1; if(nbpions1>nbpions2) cout <<"\n\n\nJoueur 2 a gagne !"; else cout <<"\n\n\n\n\nJoueur 1 a gagne !"; cin.get(); } } } int main() { srand((unsigned) time(NULL)); cout <<"421"; jouer421(); cout <<"\n\n\nCree par Nicolas DUBIEN - 2006"; cin.get(); }

Conclusion :


Merci, de me signaler tous disfonctionnements du jeu et de m'envoyer vos commentaires.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Pamaury
Messages postés
341
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
17 juin 2008
3
21 juin 2006 à 17:41
"Z'êtes vaches, il y a au pire deux IF imbriqués. Mais c'est sûr que pour la dernière boucle FOR, il faut s'accrocher un peu pour comprendre ..."
=>tout le monde n'a pas l'habitude ni/ou l'envie de lire un code non indenté car on est obligé de réfléchir à chaque ligne dans quel bloc on est . çà va parce que c'est un 421 mais cela reste infernal .
econs
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
23
21 juin 2006 à 17:04
Z'êtes vaches, il y a au pire deux IF imbriqués. Mais c'est sûr que pour la dernière boucle FOR, il faut s'accrocher un peu pour comprendre ...

Il manque une façon (propre) de quitter le jeu avant que quelqu'un ne gagne, au cas où les joueurs se lassent. Pour le calcul des points, ne sachant pas comment çà doit être fait, je te fais confiance.

Mais le jeu reste quand même plus convivial avec des dés.
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
21 juin 2006 à 16:39
À chacun son style. BruNews écrit bien de telle sorte que ses codes ne sont parfaitement lisible qu'après quelque heures de déchiffrage intense ;) (c'est une blague, on fini par s'habituer à ses codes). Dailleur si je ne me trompe pas, il y a déjà eu une source du même nom mais elle a été supprimé avant que je puisse la voir. Celle-ci est dur à comprendre avec tout ces if et else tous empilé un par dessus les autres. En plus, il n'y a aucun espacement. Tout est collé sur la bordure. On ne sais pas si tel section du code fait partie de tel if ou tel for.
wxccxw
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

21 juin 2006 à 14:05
c'est clair que sa ne me donne meme pas envi de le lire, meme pas un petit Zip etc...
luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
21 juin 2006 à 13:22
Surtout cette manie d'écrire:
if (...) {
...
}

au lieu de
if (...)
{
}

:)
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.