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.
21 juin 2006 à 17:41
=>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 .
21 juin 2006 à 17:04
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.
21 juin 2006 à 16:39
21 juin 2006 à 14:05
21 juin 2006 à 13:22
if (...) {
...
}
au lieu de
if (...)
{
}
:)
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.