Пример #1
0
 public bool PlayOneRound(int selectedPlayerCard)
 {
     Card.Values cardToAskFor = players[0].Peek(selectedPlayerCard).Value;
     for (int i = 0; i < players.Count; i++)
     {
         if (i == 0)
         {
             players[0].AskForACard(players, 0, stock, cardToAskFor);
         }
         else
         {
             players[i].AskForACard(players, i, stock);
         }
         if (PullOutBooks(players[i]))
         {
             textBoxOnForm.Text += players[i].Name + " drew a new hand\r\n";
             int card = 1;
             while (card <= 5 && stock.Count > 0)
             {
                 players[i].TakeCard(stock.Deal());
                 card++;
             }
         }
         players[0].SortHand();
         if (stock.Count == 0)
         {
             textBoxOnForm.Text = "The stock is out of cards. Game over!\r\n";
             return(true);
         }
     }
     return(false);
 }
Пример #2
0
        /// <summary>
        /// Pergunta aos outros jogadores se eles tem um dado valor.
        /// </summary>
        /// <param name="players">Lista de oponentes.</param>
        /// <param name="myIndex">?</param>
        /// <param name="stock">Cartas do monte</param>
        /// <param name="value">Valor a ser perguntado.</param>
        public void AskForACard(List <Player> players, int myIndex, Deck stock, Card.Values value)
        {
            // Pergunte para os outros jogadores se eles tem um dado valor. Primeiro adicione uma
            // linha na caixa de texto que diz "João pergunta se alguém tem alguma Rainha", por
            // exemplo. Então itere pela lista de jogadores passada como parâmetro e para cada um
            // deles pergunte se ele tem o valor (usando seu método DoYouHaveAny). Ele deve passar a
            // você um baralho - adicione este ao seu. Mantenha registro de quantas cartas foram
            // adicionadas. Se forem zero, teremos que pegar uma do monte (que também foi passado
            // como parâmetro), e nesse caso uma linha "João tem que pegar uma carta da pilha" deve
            // ser adicionada.

            int howMany = 0;

            _textBoxOnForm.Text += $"{Name} pergunta se alguém tem algum(a) {value}.\n";
            for (int i = 0; i < players.Count; i++)
            {
                if (i != myIndex)
                {
                    Player player = players[i];
                    Deck   cards  = player.DoYouHaveAny(value);
                    howMany += cards.Count;
                    while (cards.Count > 0)
                    {
                        _cards.Add(cards.Deal());
                    }
                }
            }
            if (howMany == 0)
            {
                _textBoxOnForm.Text += $"{Name} tem que pegar uma carta do monte.\n";
                _cards.Add(stock.Deal());
            }
        }
Пример #3
0
        public Deck DoYouHaveAny(Card.Values value)
        {
            Deck returnDeck = cards.PullOutValues(value);

            textBoxOfForm.Text += name + " has " + returnDeck.Count + " " + Card.Plural(value) + "." + "\r\n";
            return(returnDeck);
        }
Пример #4
0
        public void AskForACard(List <Player> players, int myIndex, Deck stock, Card.Values value)
        {
            int newCards = 0;

            textBoxOfForm.Text += name + " asks if anyone has a " + value + "." + "\r\n";
            foreach (Player p in players)
            {
                if (p.Name == name)
                {
                    continue;
                }
                Deck newDeck = p.DoYouHaveAny(value);
                while (newDeck.Count > 0)
                {
                    cards.Add(newDeck.Deal(0));
                    newCards++;
                }
            }
            if (newCards == 0)
            {
                cards.Add(stock.Deal(0));
                textBoxOfForm.Text += name + " had to draw from the stock." + "\r\n";
                if (stock.Count == 0)
                {
                    textBoxOfForm.Text += "The stock is out of cards. Game over!";
                }
            }
        }
Пример #5
0
        public List <Card.Values> PullOutBooks()
        {
            List <Card.Values> Books = new List <Card.Values>();

            for (int i = 1; i <= 13; i++)
            {
                Card.Values value   = (Card.Values)i;
                int         howMany = 0;
                for (int card = 0; card < cards.Count; card++)
                {
                    if (cards.Peek(card).Value == value)
                    {
                        howMany++;
                    }
                }
                if (howMany == 4)
                {
                    Books.Add(value);
                    for (int card = cards.Count - 1; card >= 0; card--)
                    {
                        cards.Deal(card);
                    }
                }
            }
            return(Books);
        }
Пример #6
0
        public Deck DoYouHaveAny(Card.Values value)
        {
            Deck cardsIHave = cards.PullOutValues(value);

            textBoxOnForm.Text += Name + " has " + cardsIHave.Count + " "
                                  + Card.Plural(value) + "\r\n";
            return(cardsIHave);
        }
Пример #7
0
        public void AskForACard(List <Player> players, int myIndex, Deck stock)
        {
            //Aqui temos uma versão sobrecarregada de ask for a card  - escolha um valor
            //aleatório do baralho usando GetRandomValue() e pergunte por ele usando AskForACard()

            Card.Values radomValue = GetRandomValue();
            AskForACard(players, myIndex, stock, radomValue);
        }
Пример #8
0
        /// <summary>
        /// Um oponente pergunta se o jogador tem cartas de um certo valor.
        /// </summary>
        /// <param name="value">Valor a ser perguntado.</param>
        /// <returns>Retorna um baralho com as cartas pescadas.</returns>
        public Deck DoYouHaveAny(Card.Values value)
        {
            // Um oponente pergunta se o jogador tem cartas de um certo valor usando
            // Deck.PullOutValues() para retirar os valores. Adicione uma linha na caixa de texto
            // que diz "João tem 3 Seis" - use o novo método estático Card.Plural().

            Deck deck = _cards.PullOutValues(value);

            _textBoxOnForm.Text += $"{Name} tem {deck.Count} {Card.Plural(value)}.\n";
            return(deck);
        }
Пример #9
0
        public Deck DoYouHaveAny(Card.Values values)
        {
            //Neste método  um oponente pergunta se o jogador tem cartas de um certo valor
            //usando deck.pulloutvalues() para retirar os valores. Adicione uma linha na
            //caixa de texto que dis "João tem 3 seis" - use o novo método estatico card.plural

            Deck cardsIHave = cards.Pullout(values);

            textBoxOnForm.Text += Name + " has " + cardsIHave.Count + " " + Card.Plural(values) + "\r\n";
            return(cardsIHave);
        }
Пример #10
0
 public bool ContainsValue(Card.Values value)
 {
     foreach (Card card in cards)
     {
         if (card.Value == value)
         {
             return(true);
         }
     }
     return(false);
 }
Пример #11
0
 public static string Plural(Card.Values value)
 {
     if (value == Values.Six)
     {
         return("Sixes");
     }
     else
     {
         return(value.ToString() + "s");
     }
 }
Пример #12
0
 protected bool SetStandard52() // sets the deck to a normal 52 card deck
 {
     ClearDeck();
     for (Card.Suites suite = Card.Suites.UNINITIALIZED + 1; suite < Card.Suites.MAXVALUE; suite++)
     {
         for (Card.Values value = Card.Values.UNINITIALIZED + 1; value < Card.Values.MAXVALUE; value++)
         {
             AddCard(new Card(value, suite));
         }
     }
     return(true);
 }
Пример #13
0
        /// <summary>
        /// Checa o baralho para ver se ele contém um livro de qualquer valor.
        /// </summary>
        /// <param name="value">Valor da carta</param>
        /// <returns>Retorna true se há um livro no baralho.</returns>
        public bool HasBook(Card.Values value)
        {
            int numberOfCards = 0;

            foreach (Card card in _cards)
            {
                if (card.Value == value)
                {
                    numberOfCards++;
                }
            }
            return(numberOfCards == 4);
        }
Пример #14
0
        /// <summary>
        /// Procura por qualquer carta com determinado valor e tira-as do baralho.
        /// </summary>
        /// <param name="value">Valor da carta</param>
        /// <returns>Retorna um baralho novo sem aquelas cartas.</returns>
        public Deck PullOutValues(Card.Values value)
        {
            var deckToReturn = new Deck(Array.Empty <Card>());

            for (int i = _cards.Count - 1; i >= 0; i--)
            {
                if (_cards[i].Value == value)
                {
                    deckToReturn.Add(Deal(i));
                }
            }
            return(deckToReturn);
        }
Пример #15
0
        public Deck PullOutValues(Card.Values value)
        {
            Deck deckToReturn = new Deck(new Card[] { });

            for (int i = cards.Count - 1; i >= 0; i--)
            {
                if (cards[i].Value == value)
                {
                    deckToReturn.Add(Deal(i));
                }
            }
            return(deckToReturn);
        }
Пример #16
0
        public static string Plural(Card.Values value, int count)
        {
            if (count == 0)
            {
                return(names0[(int)value]);
            }
            else if (count == 1)
            {
                return(names1[(int)value]);
            }

            return(names2[(int)value]);
        }
Пример #17
0
        public bool PlayOneRound(int selectedCard)
        {
            /*
             * Execute um turno do jogo. O parâmetro será a carta que o jogador selecionou
             * na sua mão  - recupera seu valor. Então itere por todos os jogadores e chame o
             * método AskForCard() de cada um, começando pelo jogador humano (que deve estar
             * no indice zero da lista de jogadores.Certifique-se  de que ele pergunte pelo valor)
             * da carta que selecionou). Então chame pullOutBooks() - se ele retornar true,
             * o jogador ficou sem cartas e precisa comprar uma nova mão. Depois que todos
             * jogaram, ordene a mão do jogador humano (para que ela apareça bem arrumada no formulário)
             * verifique se o monte ainta tem cartas. Se não tem, apague o texto na caixa e escreva "O monte esta sem
             * cartas. O jogo acabou!" e retorne true.Se não for o caso, o jogo ainda n cabaou, logo retorne false.
             */

            Card.Values cardToAskFor = players[0].Peek(selectedCard).Value;
            for (int i = 0; i < players.Count; i++)
            {
                if (i == 0)
                {
                    players[0].AskForACard(players, 0, stock, cardToAskFor);
                }
                else
                {
                    players[i].AskForACard(players, i, stock);
                }
                if (PullOutBooks(players[i]))
                {
                    textBoxOnForm.Text += players[i].Name + " drew  a new hand\r\n";
                    int card = 1;
                    while (card <= 5 && stock.Count > 0)
                    {
                        players[i].TakeCard(stock.Deal());
                        card++;
                    }
                }
                players[0].SortHand();
                if (stock.Count == 0)
                {
                    textBoxOnForm.Text = "The stock is out of cards. Game over!\r\n";
                    return(true);
                }
            }

            return(false);
        }
Пример #18
0
        /// <summary>
        /// Executa um turno do jogo.
        /// </summary>
        /// <param name="selectedPlayerCard">Carta que o jogador selecionou na sua mão.</param>
        /// <returns>Retorna true se o jogo acabou.</returns>
        public bool PlayOneRound(int selectedPlayerCard)
        {
            // Execute um turno do jogo. O parâmetro será a carta que o jogador selecionou na sua
            // mão - recupera seu valor. Então itere por todos os jogadores e chame o método
            // AskForACard() de cada um, começando pelo jogador humano (que deve estar no índice
            // zero na lista de jogadores. Certifique-se de que ele pergunte pelo valor da carta que
            // selecionou. Então chame PullOutBooks() - se ele retornar true, o jogador ficou sem
            // cartas e precisa comprar uma nova mão. Depois que todos jogaram, ordene a mão do
            // jogador humano (para que ela apareça bem arrumada no formulário). Verifique se o
            // monte ainda tem cartas. Se não tem, apague o texto da caixa e escreva "O monte está
            // sem cartas. O jogo acabou!" e retorne true. Se não for o caso, o jogo ainda não
            // acabou, logo retorne false.

            //_players[0].AskForACard(_players, selectedPlayerCard, _stock);
            for (int i = 0; i < _players.Count; i++)
            {
                Card.Values cardToAskFor = _players[0].Peek(selectedPlayerCard).Value;
                if (i == 0)
                {
                    _players[0].AskForACard(_players, 0, _stock, cardToAskFor);
                }
                else
                {
                    _players[0].AskForACard(_players, i, _stock);
                }
                if (PullOutBooks(_players[i]))
                {
                    _textBoxOnForm.Text += $"{_players[i].Name} fez uma nova mão\n";
                    int maxCards = _stock.Count < 5 ? _stock.Count : 5;
                    for (int j = 0; j < maxCards; j++)
                    {
                        _players[i].TakeCard(_stock.Deal());
                    }
                }
            }
            _players[0].SortHand();
            if (_stock.Count == 0)
            {
                _textBoxOnForm.Text = "O monte está sem cartas. O jogo acabou!";
                return(true);
            }

            return(false);
        }
Пример #19
0
        public bool HasBook(Card.Values value)
        {
            int NumberOfCards = 0;

            foreach (Card card in cards)
            {
                if (card.Value == value)
                {
                    NumberOfCards++;
                }
            }
            if (NumberOfCards == 4)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #20
0
        public void AskForACard(List <Player> players, int myIndex, Deck stock, Card.Values values)
        {
            /*
             * Pergunta para outros jogadores se eles tem um dado valor. Primeiro adicione
             * uma linha na caixa de texto que diz "João pergunta se alguém tem alguma rainha", por exemplo.
             * Então itere epla lista de jogadores passada como parametros e para  cada
             * um deles pergunte se ele tem o valor (usando o método DoYouHaveAny);
             * Ele deve passar  a você o baralho  - adicione este ao seu.Mantenha registro de
             * quantas cartas foram adicionadas, Se forem zero, teremos que pegar uma do monte
             * (que também foi passada como parametro), e nesse caso uma linha "João tem  que pegar uma carta da pilha"
             * deve ser adicionada
             */

            textBoxOnForm.Text += name + " asks if anyone has a " + values + "\r\n";
            int totalCardsGiven = 0;

            for (int i = 0; i < players.Count; i++)
            {
                if (i != myIndex)
                {
                    Player player     = players[i];
                    Deck   cardsGiven = player.DoYouHaveAny(values);
                    totalCardsGiven += cardsGiven.Count;
                    while (cardsGiven.Count > 0)
                    {
                        cards.Add(cardsGiven.Deal());
                    }
                }
            }

            if (totalCardsGiven == 0)
            {
                textBoxOnForm.Text += name + " musta draw from the stock.\r\n";
                cards.Add(stock.Deal());
            }
        }
Пример #21
0
        public void AskForACard(List <Player> players, int myIndex, Deck stock, Card.Values value)
        {
            textBoxOnForm.Text += Name + " asks if anyone has a " + value + "\r\n";
            int totalCardsGiven = 0;

            for (int i = 0; i < players.Count; i++)
            {
                if (i != myIndex)
                {
                    Player player     = players[i];
                    Deck   CardsGiven = player.DoYouHaveAny(value);
                    totalCardsGiven += CardsGiven.Count;
                    while (CardsGiven.Count > 0)
                    {
                        cards.Add(CardsGiven.Deal());
                    }
                }
            }
            if (totalCardsGiven == 0)
            {
                textBoxOnForm.Text += Name + " must draw from the stock.\r\n";
                cards.Add(stock.Deal());
            }
        }
Пример #22
0
 public void AskForACard(List <Player> players, int myIndex, Deck stock)
 {
     Card.Values randomValue = GetRandomValue();
     AskForACard(players, myIndex, stock, randomValue);
 }
Пример #23
0
 public Card(Card.Suits suit, Card.Values value)
 {
     this.suit  = suit;
     this.value = value;
 }