Je dois programmer un simple jeu de blackjack pour mon intro en classe C++ et la façon dont le professeur veut que nous construisions le deck me confond avec la façon dont je suis censé programmer l'As pour choisir automatiquement Après avoir lu d'autres solutions possibles, il y a eu des idées contradictoires pour d'abord fixer la valeur de l'as à 11 et soustraire 10 si vous avez fait faillite (Comment mon professeur préférait-il que la valeur soit 11)?), mais la plupart je vois dire pour mettre la valeur à 1 et ajouter 10 si nécessaire.C++ BlackJack Stuck essayant de programmer Ace
ci-dessous est la façon dont il voulait mettre en place nos classes de cartes et de plate-forme:
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
using namespace std;
class card
{
string rank;
string suit;
int value;
public:
string get_rank()
{
return rank;
}
string get_suit()
{
return suit;
}
int get_value()
{
return value;
}
//Contstructor
card(string rk = " ", string st = " ", int val = 0)
{
rank = rk;
suit = st;
value = val;
}
//print function
void print()
{
cout << rank << " of " << suit << endl;
}
};
class deck
{
card a_deck[52];
int top;
public:
card deal_card()
{
return a_deck[top++];
}
//Deck constructor
deck()
{
top = 0;
string ranks[13] = { "Ace", "King", "Queen", "Jack", "Ten", "Nine",
"Eight", "Seven", "Six", "Five", "Four", "Three", "Two" };
string suits[4] = { "Spades", "Diamonds", "Hearts", "Clubs" };
int values[13] = { 11,10,10,10,10,9,8,7,6,5,4,3,2 };
for (int i = 0; i < 52; i++)
a_deck[i] = card(ranks[i % 13], suits[i % 4], values[i % 13]);
srand(static_cast<size_t> (time(nullptr)));
}
void shuffle()
{
for (int i = 0; i < 52; i++)
{
int j = rand() % 52;
card temp = a_deck[i];
a_deck[i] = a_deck[j];
a_deck[j] = temp;
}
}
};
Ensuite, il nous a créer une classe de joueur dans lequel nous construisons la main dans un vecteur
class player
{
string name;
vector<card>hand;
double cash;
double bet;
public:
//Constructor
player(double the_cash)
{
cash = the_cash;
bet = 0;
}
void hit(card c)
{
hand.push_back(c);
}
int total_hand()
{
int count = 0;
for (int i = 0; i < hand.size(); i++)
{
card c = hand[i];
count = count + c.get_value();
}
return count;
}
};
Comment est-ce que j'irais coder l'As? il est juste passé à peine à créer un "ami" de dernière classe. devrais-je créer une fonction friend dans le deck qui change la valeur de Ace dans le tableau en un? Mon cerveau me fait mal, excuses si je n'ai pas de sens.
* Comment est-ce que je pourrais coder l'As? * - Avez-vous déjà entendu parler des déclarations "if-else"? L'ensemble du code que vous avez publié ne l'utilise nulle part, et c'est probablement ainsi que vous coderiez une carte spéciale qui a l'une des deux valeurs en fonction d'un certain scénario. – PaulMcKenzie