Jeu des cochons

cyrielle21121 Messages postés 3 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 22 avril 2011 - 21 avril 2011 à 17:46
cyrielle21121 Messages postés 3 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 22 avril 2011 - 22 avril 2011 à 18:02
bonjour,
je suis étudiante en L3 SVT et je dois rendre un algorithme C++ pour le jeu des cochons.
2 joueurs lancent 2 cochons et, suivant leur position, marquent des points.
l'utilisateur joue contre le robot.
La stratégie du robot est d'utiliser la valeur de score critique de 15 et de passer ensuite les dés au joueur.
J'ai commencé par annoncer la proba d'obtenir les scores mais je suis bloquée: mon code ne marche pas et je nai aucune idée de comment noter la boucle while...

Est ce que vous pourriez me donner des pistes?
merci

voila le debut de mon code
#include
#include <stdlib.h> // bibliothèque pour les fonctions rand()
int main()
{ //lancer de dé
cout << " Jeu des cochons \n";
int gain_1_lancer;
float tirage;
tirage = (rand()+0.0)/RAND_MAX;
if ((tirage>=0)&&(tirage<0.2097)) // selon cette probabilité, le joueur gagne n point {
cout << "gain:" << gain_1_lancer = 1 << "n";
}
if ((tirage>=0.2097)&&(tirage<0.619)) {
cout << "gain:" << gain_1_lancer = 5 << "n";
}
if ((tirage>=0.619)&&(tirage<0.6907)) {
cout << "gain:" << gain_1_lancer = 10 << "n";
}
if ((tirage>=0.6907)&&(tirage<0.7209)) {
cout << "gain:" << gain_1_lancer = 15 << "n";
}
if ((tirage>=0.7209)&&(tirage<0.7921)){
cout << "gain:" << gain_1_lancer = 20 << "n";
}
if ((tirage>=0.7921)&&(tirage<0.7927)){
cout << "gain:" << gain_1_lancer = 25 << "n";
}
if ((tirage>=0.7927)&&(tirage<0.7934)){
cout << "gain:" << gain_1_lancer = 40 << "n";
}
if ((tirage>=0.7934)&&(tirage<0.7935 )){
cout << "gain:" << gain_1_lancer = 60 << "n";
}
if ((tirage>=0.7935 )&&(tirage<0.9960 )){
cout << "gain:" << gain_1_lancer = 0 << "n";
}
if ((tirage>=0.9960)&&(tirage<0.9998)){
cout << "gain:" << gain_1_lancer = banqueroute << "n";
}

system("PAUSE");
return(0);
}

5 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 avril 2011 à 22:45
salut,

Déjà, tu peux commencer a structurer ton code:

#include 
#include <stdlib.h>

#define banqueroute -1

int lancer_des()
{
    float tirage = (rand()+0.0)/RAND_MAX;
    if ((tirage>=0)&&(tirage<0.2097)) return 1;
    if ((tirage>=0.2097)&&(tirage<0.619)) return 5;
    if ((tirage>=0.619)&&(tirage<0.6907)) return 10;
    if ((tirage>=0.6907)&&(tirage<0.7209)) return 15;
    if ((tirage>=0.7209)&&(tirage<0.7921)) return 20;
    if ((tirage>=0.7921)&&(tirage<0.7927)) return 25; 
    if ((tirage>=0.7927)&&(tirage<0.7934)) return 40;
    if ((tirage>=0.7934)&&(tirage<0.7935)) return 60; 
    if ((tirage>=0.7935)&&(tirage<0.9960)) return 0;
    return banqueroute;
}

int main()
{
    int gains_joueur1, gains_joueur2;
    int gains_manche, gains_jet;
    int c;

    cout << " Jeu des cochons \n";

    do {

        // tour du robot.
        gains_manche = 0;

        do {

            gains_jet = lancer_des();
            cout << "gain:" << gain_jet << "\n";
            gains_manche += gains_jet;
            cout << "gain manche:" << gains_manche << "\n";

        } while(gains_manche < 15);

        // tour du joueur

        gains_manche = 0;
        do {

            cout << "1:lancer les des.\n";
            cout << "2:passer la main.\n";
            cout << "3:quitter.\n";
            c = getchar();

        } while(c == '1');

    } while(c != '3');

    return 0;
}



N'etant pas spécialiste du jeu et ignorant même les règles, je ne peux pas trop t'aider.

@++
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 avril 2011 à 22:56
Ca sera pas plus mal comme ça.


int lancer_des()
{
    float tirage = (rand()+0.0)/RAND_MAX;
    if (tirage < 0) return banqueroute; // ou relancer des ?
    if (tirage < 0.2097) return 1;
    if (tirage < 0.619) return 5;
    if (tirage < 0.6907) return 10;
    if (tirage < 0.7209) return 15;
    if (tirage < 0.7921) return 20;
    if (tirage < 0.7927) return 25; 
    if (tirage < 0.7934) return 40;
    if (tirage < 0.7935) return 60; 
    if (tirage < 0.9960)) return 0;
    return banqueroute;
}

0
cyrielle21121 Messages postés 3 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 15:15
merci beaucoup !
je ne comprend pas la fonction de getchar(). a quoi sert elle ?
est il possible de faire en sorte quil y ait un calcul du nombre de parties gagnées par le robot et le joueur ?
en fait, le but du projet serait de savoir qui gagne entre un robot ayant comme stratégie un score critique de 15 et l'utilisateur ayant un score critique de 25.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
22 avril 2011 à 17:20
re,

Autant faire jouer 2 robots si c'est pour calculer cette statistique.

Tu peux faire faire tout ce que tu veux à un ordi (sauf le café). Il te suffiras de comparer qui à gagné à la fin des deux boucles et d'incrémenter le compteur du vainqueur.

Si tu veux programmer, trouves-toi une documentation sur les fonctions libc. Tape le nom de la fonction dans ton moteur de recherche, tu obtiendras toutes les infos voulues.

int getchar() : lit les entrées de stdin.

@++
0

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

Posez votre question
cyrielle21121 Messages postés 3 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 18:02
ok
je cherchais dans mon cours mais cest un module de 10h et on a pas vu beaucoup de fonctionnalités
et sur internet, cest un peu compliqué pour moi
en tout cas merci !
0
Rejoignez-nous