Débutant: jeu de carte "stupide vautour" en mode console (2 joueurs) (avec ia)

Soyez le premier à donner votre avis sur cette source.

Vue 3 724 fois - Téléchargée 280 fois

Description

Pour ceux qui connaissent, c'est la version console du jeu de carte "Stupide Vautour". Pour cette source, on ne peut y jouer qu'a deux joueurs. (Je parie que c'est une grosse déception pour vous, non?) En fait, je crois que cette source est surtout pour aider les débutants qui commencent (comme moi...) et qui recherchent de petits programmes a copier en ne regardant que l'.exe. En effet, ces petits programmes sont un peu rare, et celui-ci tente de répondre aux quelques exigences des débutants: relativement simple à faire, mais avec quand même un peu de défi.

Source / Exemple :


#include <iostream>
#include <conio.h>

using namespace std;

int sourischoisie, cartechoisie, cartedupc, carteadv;;
bool dejapris[15];
int autrecarte[15];  

bool vautour = false;

class Joueur
{
    public:
        Joueur(int njoueur) { joueurX = njoueur; }
        ~Joueur() {}
        
        int DemanderCarte();
        void InitialiserCartes();  
        void SetTotal(int total) { totalJoueur = totalJoueur + total; }        
        int GetTotal() { return totalJoueur; }        
        
        int arrayjoueur[15];
        int joueurX;
        
        int RandomCarte();
    protected:
        int totalJoueur;    
};   

class Souris
{
    public:
        Souris() {}
        ~Souris() {}
        
        int RandomSouris();
        void InitialiserSouris();
        
        int arraysouris[15];              
};

void Joueur::InitialiserCartes() 
{ 
    for (int i = 0; i < 15; i++) 
        arrayjoueur[i] = i+1; 
} 

int Joueur::DemanderCarte()
{   
    int cartedecidante;
    
    cout << "Joueur " << joueurX << ", veuillez entrer la carte choisie:\n";
    cin >> cartedecidante;
     
    cartechoisie = arrayjoueur[cartedecidante-1];    
      
    
    while (cartechoisie == 19 || cartedecidante > 15 || cartedecidante < 1)
    {        
        cout << "Carte deja choisie,superieur a 15 ou inferieure a 1.Entrez-en une autre:\n";
        cin >> cartedecidante;
        cartechoisie = arrayjoueur[cartedecidante-1];         
    }   
    
    arrayjoueur[cartedecidante-1] = 19;       
          
    return cartechoisie;
}

int Joueur::RandomCarte()
{    
    
    switch (sourischoisie)
    {
        case -5:
            if (dejapris[1] == true)
                return autrecarte[1];
            else
            {
                cartedupc = (rand()%2)+14;
                dejapris[0] = true;
                autrecarte[0] = 29 - cartedupc;
            }
            break; 
             
        case 10:
            if (dejapris[0] == true)
                return autrecarte[0];
            else
            {
                cartedupc = (rand()%2)+14;
                dejapris[1] = true;
                autrecarte[1] = 29 - cartedupc;
            }
            break;   
            
        case -4:
            if (dejapris[3] == true)  
                 return autrecarte[3];
            else
            {
                cartedupc = (rand()%2)+12;
                dejapris[2] = true;
                autrecarte[2] = 25 - cartedupc;
            }
            break;
        
        case 9:
            if (dejapris[2] == true)   
                return autrecarte[2];
            else
            {
            cartedupc = (rand()%2)+12;
            dejapris[3] = true;
            autrecarte[3] = 25 - cartedupc;
            }
            break;
        
        case -3:
            if (dejapris[5] == true)
                return autrecarte[5];
            else
            {
                cartedupc = (rand()%2)+10; 
                dejapris[4] = true;
                autrecarte[4] = 23 - cartedupc;
            }
            break;
            
        case 8:
            if (dejapris[4] = true)
                return autrecarte[4];
            else
            {
                cartedupc == (rand()%2)+10; 
                dejapris[5] = true;
                autrecarte[5] = 23 - cartedupc;
            }
            break;       
            
        case -2:
            if (dejapris[7] == true)
                return autrecarte[7];
            else
            {
                cartedupc = (rand()%2)+8; 
                dejapris[6] = true;
                autrecarte[6] = 17 - cartedupc;
            }
            break;
            
        case 7:
            if (dejapris[6] == true)
                return autrecarte[6];
            else
            {
                cartedupc = (rand()%2)+8; 
                dejapris[7] = true;
                autrecarte[7] = 17 - cartedupc;
            }
            break;
            
        case -1:
            if (dejapris[9] == true)
                return autrecarte[9];
            else
            {
                cartedupc =  (rand()%2)+6;  
                dejapris[8] = true;
                autrecarte[8] = 13 - cartedupc;
            }
            break;
            
        case 6:
            if (dejapris[8] == true)
                return autrecarte[8];
            else
            {
                cartedupc = (rand()%2)+6;
                dejapris[9] = true;
                autrecarte[9] = 13 - cartedupc;
            }
            break;
            
        case 5:
            if (dejapris[11] == true)
                return autrecarte[11];
            else
            {
                cartedupc = (rand()%2)+4;
                dejapris[10] = true;
                autrecarte[10] = 9 - cartedupc;
            }
            break;
        
        case 4:
            if (dejapris[10] == true)
                return autrecarte[10];
            else
            {
                cartedupc = (rand()%2)+4;
                dejapris[11] = true;
                autrecarte[11] = 9 - cartedupc;
            }
            break;
            
        case 3:
            if (dejapris[13] == true)                                
                return autrecarte[13];
            else
            {
                cartedupc = (rand()%2)+2;
                dejapris[12] = true;
                autrecarte[12] = 5 - cartedupc;
            }
            break;
            
        case 2:
            if (dejapris[12] == true)
                return autrecarte[12];
            else
            {
                cartedupc = (rand()%2)+2;
                dejapris[13] = true;
                autrecarte[13] = 5 - cartedupc;
            }
            break;
            
        case 1:
            cartedupc = 1;                                                                    
        }                 
    
    return cartedupc;
}    

void Souris::InitialiserSouris() 
{
    for (int i = 0; i < 5; i++) 
        arraysouris[i] = i-5;  
        
    for (int i = 5; i < 15; i++) 
         arraysouris[i] = i-4;         
}   

int Souris::RandomSouris() 
{   
    int sourisrandom = rand()%15;  
     
    sourischoisie = arraysouris[sourisrandom]; 
    
    while (sourischoisie == 0)
    {
        sourisrandom = rand()%15;
        sourischoisie = arraysouris[sourisrandom]; 
    }
    
    if (arraysouris[sourisrandom] < 0)
    {
        vautour = true;
    } 
    else
    {
        vautour = false;
    }  
    
    arraysouris[sourisrandom] = 0;  
          
    return sourischoisie;
} 
// Les trois classes. Déclarée ici et non dans le main pour être utilisée
// dans la fonction ComparerCartes()
Joueur joueur(1);
Joueur adv(2);
Souris pc;  

int ComparerCartes(int jo2, int jo1)
{    
    if (vautour == true && jo1 < jo2)
    {
        joueur.SetTotal(sourischoisie);
        cout << "Joueur 1 perd " << sourischoisie << " points!\n";
    }
    
    if (vautour == true && jo1 > jo2)
    {
        adv.SetTotal(sourischoisie);
        cout << "Joueur 2 perd " << sourischoisie << " points!\n";
    }
        
    if (vautour == false && jo1 < jo2) 
    { 
        adv.SetTotal(sourischoisie); 
        cout << "Joueur 2 a eu le point!\n"; 
    }  
    
    if (vautour == false && jo1 > jo2)
    { 
        joueur.SetTotal(sourischoisie); 
        cout << "Joueur 1 a eu le point!\n"; 
    }  

    if(jo1 == jo2) 
    {
        cout<<"La souris s'echappe...\n";
    }              
}       

void PresenterJeu()
{
    cout << "\t\t\t Stupide Vautour\n";
    cout << "Le but du jeu est d'avoir le plus de point pour gagner.";
    cout << "A chaque coup, on choisi une carte de 1 a 15. La carte la plus haute gagne.";
    cout << "Soyez judicieux dans le choix de vos cartes!. Bonne chance!\n\n\n";
}     
        
int main()
{
    srand( ( unsigned ) time ( NULL ) );  
    
    int mode;   
      
    joueur.InitialiserCartes();   
    adv.InitialiserCartes();    
    pc.InitialiserSouris();
    
    PresenterJeu();  
    cout << "\t (1) Deux joueurs\n" "\t (2) Contre l'ordinateur\n\n";
    cin >> mode;
    switch (mode)
    {
        case 1:
            for (int i = 0; i < 15; i++)
            {              
                pc.RandomSouris();
                cout << "\nTour " << i+1 << endl;
                cout << "\nLa souris vaut: " << sourischoisie << endl;                
                ComparerCartes(adv.DemanderCarte(),joueur.DemanderCarte());   
                cout << "Joueur 1: " << joueur.GetTotal() << endl;
                cout << "Joueur 2: " << adv.GetTotal() << endl;  
                cout << "\n";                         
             }
             break;
        case 2:
             for (int h = 0; h < 15; h++)
                 autrecarte[h] = 0;
             for (int i = 0; i < 15; i++)
            {              
                pc.RandomSouris();
                cout << "\nTour " << i+1 << endl;
                cout << "\nLa souris vaut: " << sourischoisie << endl;
                carteadv = adv.RandomCarte();                               
                ComparerCartes(carteadv,joueur.DemanderCarte()); 
                cout << "L'ordinateur avait joue " << carteadv << endl;                  
                cout << "Joueur 1: " << joueur.GetTotal() << endl;
                cout << "Joueur 2: " << adv.GetTotal() << endl;  
                cout << "\n";       
                             
             } 
             break;
         }         
    
    getch();	
    return 0;
}

Conclusion :


J'ai mit la source dans la catégorie jeux... bien que ce n'en soit un qu'à moitié.
Je ne crois pas qu'il y ait de bugs majeurs qui empêchent les gens de jouer mais bon, si vous en trouver.
Peut-être que je ferai une version avec un nombre de joueur demandé, ou contre l'ordinateur... ça viendra quand ça viendra si ça vien :p
C'est mon tout premier code vraiment qui mérite d'être mit ici (j'espère...)

Un grand grand merci a Karnification qui sans lui il n'y aurait pas de ça ici :p (Il m'a grandement aidé... grandement avec un grand G ;) )

Postez vos commentaires, soyez indulgents :p

Update: 18 juin 2004, ajout de l'IA

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
8
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
26 juillet 2004

Voilà, je vien de me décider à poster l'IA. C'est un truc fais au cas par cas quasiment mais bon, au moins on peut le modifier si on trouve que ça joue mal. Normalement ça devrait marché adéquatement et être d'une difficulté normale puisque ça fonctionne selon la valeur des cartes.
Messages postés
8
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
26 juillet 2004

Voilà, je vien de me décider à poster l'IA. C'est un truc fais au cas par cas quasiment mais bon, au moins on peut le modifier si on trouve que ça joue mal. Normalement ça devrait marché adéquatement et être d'une difficulté normale puisque ça fonctionne selon la valeur des cartes.
Messages postés
8
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
26 juillet 2004

L'IA s'en vient très prochainement : j'ai commencer à la faire. C'est pas facile facile vu que c'est ma première mais je crois que je m'en tire quand même bien. Ça viendra bientôt surement, bien que je suis dans une semaine d'examen cette semaine et la suivante, donc on verra. Je donnerai des nouvelles.
Messages postés
230
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
4 août 2005

Ouais c'est pas mal pour une première source mais vivement l'IA parce que jouer tout seul ça craint !
Bref ça me rappelle le bon vieux temps ou je programmais sous DOS (pas si vieux que ça tout de même) sa vaut bien 8/10
Messages postés
688
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
19 mai 2005

bravo bravo !! pour une premiere source source super cppfrance c deja pas mal super
bien continu :)
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.