2010-04-26 3 views
3

J'essaie de créer un programme qui fonctionne avec les mains de départ du poker (texas holdem); chaque main a une valeur de 1 à 169, et je veux être en mesure d'entrer chaque carte et si elles sont adaptées ou non, et ont ces valeurs correspondent à une série de structures. Voici le code jusqu'à présent, je ne peux pas sembler le faire fonctionner (im un début programmeur). oh et im en utilisant Visual Studio 2005 par la façon dontinitialisation des structures en utilisant les informations entrées par l'utilisateur

#include "stdafx.h" 
#include <iostream> 


int main() 
{ 
    using namespace std; 


    struct FirstCard 
    { 
     struct SecondCard 
     { 

      int s; //suited 
      int n; //non-suited 

     }; 

     SecondCard s14; 
     SecondCard s13; 
     SecondCard s12; 
     SecondCard s11; 
     SecondCard s10; 
     SecondCard s9; 
     SecondCard s8; 
     SecondCard s7; 
     SecondCard s6; 
     SecondCard s5; 
     SecondCard s4; 
     SecondCard s3; 
     SecondCard s2; 


    }; 

    FirstCard s14; //ace 
    FirstCard s13; //king 
    FirstCard s12; //queen 
    FirstCard s11; //jack 
    FirstCard s10; 
    FirstCard s9; 
    FirstCard s8; 
    FirstCard s7; 
    FirstCard s6; 
    FirstCard s5; 
    FirstCard s4; 
    FirstCard s3; 
    FirstCard s2; 


    s14.s14.n = 169; // these are the values that each combination 
    s13.s13.n = 168; // will evaluate to, would eventually have 
    s12.s12.n = 167; // hand combinations all the way down to 1 
    s11.s11.n = 166; 
    s14.s13.s = 165; 
    s14.s13.s = 164; 
    s10.s10.n = 163; //10, 10, nonsuited 
    s14.s13.n = 162; 
    s14.s11.s = 161; 
    s13.s12.s = 160;// king, queen, suited 
    s9.s9.n = 159; 
    s14.s10.s = 158; 
    s14.s12.n = 157; 
    s13.s11.s = 156; 
    s8.s8.n = 155; 
    s12.s11.s = 154; 
    s13.s10.s = 153; 
    s14.s9.s = 152; 
    s14.s11.n = 151; 

    cout << "enter first card: " << endl; 

    cin >> somthing?//no idea what to put here, but this would somehow 
      //read out the user input (a number from 2 to 14) 
      //and assign it to the corresponding struct 

    cout << firstcard.secondcard.suited_or_not << endl; //this would change depending 
                  //on what the user inputs 
    system("Pause"); 

} 
+0

Honnêtement? Je pense que vous devez commencer à partir de zéro. Démarrer simple - écrire une fonction qui permet à l'utilisateur d'entrer un nombre 2-14 et un costume (s, c, d, h). Puis appelez le deux fois. Assignez à "card1" et "card2", puis utilisez-les pour déterminer s'il est adapté et calculer l'indice 1-169. Votre structure de carte doit avoir "valeur" et "costume". – Stephen

Répondre

2

Tout d'abord, au lieu d'apprendre tous par essais et erreurs, pensez à lire un bon livre d'introduction (list here). Chaque livre qui vaut la peine d'être lu traite de l'entrée de base en C++ et de la façon de gérer le code répétitif par ex. en utilisant des conteneurs. Cela dit: je ne connais rien au poker, mais vous devez absolument lire sur les conteneurs - si vous définissez des variables à plusieurs reprises, il doit y avoir un moyen de les abstraire.

Allant de ce que vous avez, disons que nous regroupons les valeurs dans un struct:

struct Values { 
    unsigned suited; 
    unsigned unsuited; 
    Values() : suited(0), unsuited(0) {} // some default 
}; 

Ensuite, nous pouvons utiliser des conteneurs qui nous permet d'y accéder par leur numéro:

typedef std::map<unsigned, Values> SecondCardMap; 
typedef std::map<unsigned, SecondCardMap> CardMap; 

Avec que nous pouvons insérer et modifier commodément les structures via leurs numéros:

CardMap cards; 
cards[14][14].unsuited = 169; 
cards[13][13].unsuited = 168; 

Maintenant vous seulement ave lire des indices de l'utilisateur:

unsigned first, second; 
std::cout << "enter first: "; 
std::cin >> first; 
std::cout << "enter second: "; 
std::cin >> second; 

Et peut accéder aux valeurs selon que:

cards[first][second].unsuited = 1234; 

Notez que la manipulation n'adresse ci-dessus aucune erreur, etc.

Questions connexes