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); }
/// <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()); } }
public Deck DoYouHaveAny(Card.Values value) { Deck returnDeck = cards.PullOutValues(value); textBoxOfForm.Text += name + " has " + returnDeck.Count + " " + Card.Plural(value) + "." + "\r\n"; return(returnDeck); }
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!"; } } }
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); }
public Deck DoYouHaveAny(Card.Values value) { Deck cardsIHave = cards.PullOutValues(value); textBoxOnForm.Text += Name + " has " + cardsIHave.Count + " " + Card.Plural(value) + "\r\n"; return(cardsIHave); }
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); }
/// <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); }
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); }
public bool ContainsValue(Card.Values value) { foreach (Card card in cards) { if (card.Value == value) { return(true); } } return(false); }
public static string Plural(Card.Values value) { if (value == Values.Six) { return("Sixes"); } else { return(value.ToString() + "s"); } }
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); }
/// <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); }
/// <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); }
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); }
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]); }
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); }
/// <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); }
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); } }
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()); } }
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()); } }
public void AskForACard(List <Player> players, int myIndex, Deck stock) { Card.Values randomValue = GetRandomValue(); AskForACard(players, myIndex, stock, randomValue); }
public Card(Card.Suits suit, Card.Values value) { this.suit = suit; this.value = value; }