Игра в покер: метод обмена в переполнении стека

Я изучаю C ++, и я пытаюсь найти метод, который включает в себя замену карты в списке ниже.

например:

  1. туз пик
  2. король червей
  3. четыре из клубов
  4. два сердца
  5. два клуба

Как бы я обменял 2, 3 и 5 каждый на новую карту.

Итак, вот мой код, у меня есть другие файлы заголовков, которые он также использует, но я думаю, что вы, ребята, должны быть в состоянии понять, с чего я это делаю.

#ifndef POKERGAME_H
#define POKERGAME_H//guard code

#include <iostream>
#include <iomanip>

//don't need to add .cpp files
#include "Card.h"#include "Deck.h"#include "Hand.h"

class PokerGame
{
public:
void playGame()
{
PokerGame play;
Deck myCard;
Hand hand;
Hand list;

cout << "***Simple 5-card Poker***" << endl;

//get a brand new card and places it in position
hand.setCard(0, myCard.getNextCard());
hand.setCard(1, myCard.getNextCard());
hand.setCard(2, myCard.getNextCard());
hand.setCard(3, myCard.getNextCard());
hand.setCard(4, myCard.getNextCard());

cout << "The cards have been shuffled and you are dealt " << endl
<<"1."<< hand.getCard(0).printName() << endl//then i ask what is the name of the card in that position
<<"2."<< hand.getCard(1).printName() << endl
<<"3."<< hand.getCard(2).printName() << endl
<<"4."<< hand.getCard(3).printName() << endl
<<"5."<< hand.getCard(4).printName() << endl;

//ask for users input and store them in an array
int stop = 0;
int user_input[6];
int counter = 0;

while((stop != -1) && counter < 6 )
{

cout << "Indicate the cards that you would like to exchange (-1 to end): ";
cin >> user_input[counter];if(user_input[counter] > 5 || user_input[counter] < 0 || user_input[counter - 1] == user_input[counter])
{
cout << "Invalid input" << endl;
if(user_input[counter] == -1)
{
stop = -1;
cout << "...Oh nevermind...ended" << endl;
}
}
counter++;
}

Вот где у меня проблемы, я только получаю № 1 в списке, чтобы измениться. Когда только пользовательские цифры ввода должны быть изменены. Как я могу изменить код, чтобы это произошло?

    //now remove the desired card from the player's hand
for(int i = 0; i < sizeof(user_input); i++ )
{
if(user_input[i] =  1)
{
hand.setCard(0, myCard.getNextCard());//change #1 on the list
}else if(user_input[i] =  2)
{
hand.setCard(1, myCard.getNextCard());//#2
}
else if(user_input[i] =  3)
{
hand.setCard(2, myCard.getNextCard());//#3
}
else if(user_input[i] =  4)
{
hand.setCard(3, myCard.getNextCard());//#4
}
else if(user_input[i] =  5)
{
hand.setCard(4, myCard.getNextCard());//#5
}

}

cout << "You new hand is: " << endl
<<"1."<< hand.getCard(0).printName() << endl//then i ask what is the name of //the card in that position
<<"2."<< hand.getCard(1).printName() << endl
<<"3."<< hand.getCard(2).printName() << endl
<<"4."<< hand.getCard(3).printName() << endl
<<"5."<< hand.getCard(4).printName() << endl;

-2

Решение

2 проблемы:

1) Вы не инициализируете user_input, Делать:

int user_input[6] = {};

установить все элементы в 0,

2) Ваши условия во всех назначаются вместо сравнения …

if(user_input[i] =  1)

должно быть:

if(user_input[i] == 1)
//                ^ - missing equal sign
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]