Карточная игра, обслуживайте карты без дубликатов, используя c ++ - PullRequest
0 голосов
/ 23 мая 2019

У меня есть код. Это код для карточной игры. Проблема в том, что карты должны раздаваться игрокам, но они не дублируются.

Если это возможно, мне нужна твоя помощь. Спасибо.

#include<iostream>
#include<array>
#include<string>
#include<ctime>

using namespace std;

class Card {
public:
    static const size_t card1{ 4 };
    static const size_t card2{ 13 };

    Card(const array<string, card1>& card1n,
        const array<string, card2>& card2n)
        : arr1{ card1n }, arr2{ card2n } {}
    void disPlay() {
        for (int x = 0; x < arr2.size(); x++) {
            int i = rand() % 4;
            int j = rand() % 13;
            cout << arr1[i] + arr2[j] << " ";
        }
    }
private:
    array<string, card1> arr1;
    array<string, card2> arr2;
};
int main() {
    array<string, Card::card1> arr1{ "♥","◆","♠","♣" };
    array<string, Card::card2> arr2{ "A", "2", "3", "4", "5", "6", "7",     "8", "9", "10", "jack", "queen", "king" };
    Card p1(arr1, arr2);
    Card p2(arr1, arr2);
    srand(static_cast<unsigned int>(time(0)));

    cout << "player1's deck : ";
    p1.disPlay();

    cout << "\nplayer2's deck : ";
    p2.disPlay();
}

Я предсказываю игроков с перекрывающимися картами

Ответы [ 2 ]

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

Сначала вы создаете колоду из 52 карт (все 4 масти и все 13 рангов). Эта колода может быть массивом из 52 предметов, каждый предмет представляет одну карту. Затем вы перемешиваете колоду с std::shuffle. Затем вы перемещаете первые X карт из колоды в 1 руку игрока. Эта рука может быть другим массивом X предметов. Затем вы перемещаете следующие X карт в 2 руки игрока.

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

Насколько я понимаю, вы хотите, чтобы у двух игроков были одинаковые карты. Я запустил ваш код, и он вывел это:

player1's deck : ♥Q ♠8 ♠10 ♥2 ◆K ♣3 ♥J ♣6 ◆5 ♥K ♥9 ♠10 ◆K 
player2's deck : ♠8 ◆7 ♥5 ◆2 ♠2 ♠2 ♥10 ◆3 ♥9 ♣Q ♣A ♥Q ◆5 

Обратите внимание, что в обоих сетах есть ♥ Q и ◆ 5, но также есть два deck 2 в колоде 2 игрока и два ◆ K в колоде 1 игрока.

Вы можете перемешать массив, указанный @Bathsheba, и извлечь его из одной и той же точки отсчета для обоих игроков.

(Edit: std :: переместить даже не нужно)

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