Вектор структур в карточной игре, не отображающий карту после, не уверен, была ли вообще создана колода - PullRequest
0 голосов
/ 02 мая 2019

Я делаю основную карточную игру на с ++, и я знаю, что мои карты создаются, я просто не знаю, помещают ли они их в вектор.

Я пытался использовать функции для передачи информации, я протестировал ее, не тасуя, чтобы убедиться, что она хотя бы обнаруживает правильные догадки.

struct card
{
   string cardFace, cardSuit;
};


int main()
{

    vector<card> deck;
    card currentCard;
    string input;

    for (int i = 0; i < 4; i++)
    {
        string suits[4] = { "Hearts", "Diamonds", "Spades", "Clubs" };

        for (int j = 1; j < 13; j++)//13 cards per suit
        {
            card a;

            if (j == 1)
                a.cardFace = "Ace";

            if (j == 11)
                a.cardFace = "Jack";

            if (j == 12)
                a.cardFace = "Queen";

            if (j == 13)
                a.cardFace = "King";

            else
                a.cardFace = to_string(j);

            a.cardSuit = suits[i];
            deck.push_back(a);
        }
    }

    random_shuffle(deck.begin(), deck.end());

    currentCard.cardFace = deck[0].cardFace;
    currentCard.cardSuit = deck[0].cardSuit;

    if(input == currentCard.cardFace)
    cout << currentCard.cardFace << " is the right answer!" << endl;

    return 0;
}

Я ожидаю выводабыть: Джек правильный ответ!но я получил: это правильный ответ!

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Я пробовал этот вариант вашей программы на IdeOne :

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct card
{
   string cardFace, cardSuit;
};


int main()
{
    vector<card> deck;
    card currentCard;

    for (int i = 0; i < 4; i++)
    {
        string suits[4] = { "Hearts", "Diamonds", "Spades", "Clubs" };

        for (int j = 1; j < 13; j++)//13 cards per suit
        {
            card a;

            if (j == 1)
                a.cardFace = "Ace";

            if (j == 11)
                a.cardFace = "Jack";

            if (j == 12)
                a.cardFace = "Queen";

            if (j == 13)
                a.cardFace = "King";

            else
                a.cardFace = to_string(j);

            a.cardSuit = suits[i];
            deck.push_back(a);
        }
    }

    random_shuffle(deck.begin(), deck.end());

    currentCard.cardFace = deck[0].cardFace;
    currentCard.cardSuit = deck[0].cardSuit;

    cout << currentCard.cardFace << " " << currentCard.cardSuit << " is the right answer!" << endl;

    return 0;
}

И все заработало как положено.

0 голосов
/ 02 мая 2019

Единственный вывод, который я вижу в вашей программе, защищен параметром if, который всегда будет ложным, потому что вы никогда не устанавливали input. Кажется, вы заинтересованы в подтверждении того, что ваша колода была успешно построена. Чтобы сделать это, добавьте это внизу вашего main живого примера здесь

for (auto& c : deck) {
    std::cout << c.cardFace << " " << c.cardSuit << '\n';
}

Выше отображаются все карты в вашем deck. Хотя есть намного больше изменений Я бы порекомендовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...