private async void Deal() { var deck = Cards.Shuffle(Cards.FullDeck); foreach (var card in deck) { PossibleDeck.Add(card); // Possible list of card RemainingDeck.Add(card); await Task.Delay(1); } for (int i = 0; i < 10; i++) { Cards.Card computerCard = DrawTopCardFromDeck(); ComputerCards.Add(computerCard); // Remove the list of card on computer hand, as it is seen removePossibleCard(computerCard); await Task.Delay(30); HumanCards.Add(DrawTopCardFromDeck()); await Task.Delay(30); } Discards.Add(DrawTopCardFromDeck()); // Remove the discard from possible deck removePossibleCard(Discards[Discards.Count - 1]); ScoreToWin = "Score To Win : " + winingScore.ToString(); scoreLabel(firstWinnerScore, secondWinnerScore); }
private void RemoveComputerCard() { List <int> compCardList = ComputerCards.ToList(); compCardList.Remove(ComputerSelection); ComputerCards = compCardList.ToArray(); }
private void CleanUpCards() { HumanCards.Clear(); ComputerCards.Clear(); RemainingDeck.Clear(); Discards.Clear(); Deal(); }
private void ComputerPlayerTurn() { Cards.Card card = DrawTopCardFromDeck(); ComputerCards.Add(card); ComputerCards.Remove(card); Discards.Add(card); computerStage = false; pickUpStage = true; }
async private void ArtificialPlayer() { if (takenFromDeckOrDiscardPile) { while (true) { ComputerThoughts = "Calculating your impending doom ..."; foreach (var card in ComputerCards) { computerSeen.Remove(card); } GinRummy.sortByRankAndSuit(ComputerCards); var x = ComputerPlayer.averageAllOfThePossibleDeadwoods(computerSeen, ComputerCards); var pickupFromDeckOrDiscard = await Task.Run(() => ComputerPlayer.ComputerPickupDiscard(ComputerCards, Discards.First(), computerSeen)); if (pickupFromDeckOrDiscard) // picking up from the deck { ComputerThoughts = "You can not comprehend how much I know the top of the deck will benefit me, fool!"; ComputerCards.Add(DrawTopCardFromDeck()); await Task.Delay(5000); var cardToAddToDiscard = ComputerPlayer.ComputerMove(ComputerCards); ComputerCards.Remove(cardToAddToDiscard.Item2.Value); Discards.Add(cardToAddToDiscard.Item2.Value); } else // picking up from the discard { ComputerThoughts = "Ahh this card will do very nicely, my thanks for allowing me to have it, fool!"; await Task.Delay(2000); var topOfDiscard = Discards[Discards.Count - 1]; ComputerCards.Add(topOfDiscard); Discards.Remove(topOfDiscard); await Task.Delay(5000); var cardToAddToDiscard = ComputerPlayer.ComputerMove(ComputerCards); ComputerCards.Remove(cardToAddToDiscard.Item2.Value); Discards.Add(cardToAddToDiscard.Item2.Value); } ComputerThoughts = "I now end my turn. Your move, human." + GinRummy.Deadwood(ComputerCards); break; } canNowDiscard = false; takenFromDeckOrDiscardPile = false; } }
private void ComputerTurn() { var takeDiscard = ComputerPlayer.ComputerPickupDiscard(ComputerCards, Discards[Discards.Count - 1], RemainingDeck); if (takeDiscard) { var discardCard = Discards[Discards.Count - 1]; Discards.Remove(discardCard); ComputerCards.Add(discardCard); } else { Cards.Card remainingDeckCards = RemainingDeck[RemainingDeck.Count - 1]; RemainingDeck.Remove(remainingDeckCards); ComputerCards.Add(remainingDeckCards); } var compMove = ComputerPlayer.ComputerMove(ComputerCards); ComputerCards.Remove(compMove.Item2.Value); Discards.Add(compMove.Item2.Value); var scores = GinRummy.Score(ComputerCards, HumanCards); if (compMove.Item1.IsGin) { compScore += scores; if (humanScore < 100 && compScore < 100) { RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far"); CleanUpCards(); } } else if (compMove.Item1.IsKnock) { if (scores > 0) { compScore += scores; if (humanScore < 100 && compScore < 100) { RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far"); CleanUpCards(); } } else { humanScore += Math.Abs(scores); if (humanScore < 100 && compScore < 100) { RaiseNotification("Human Score: " + humanScore + ". Computer Score: " + compScore, "Scores So Far"); CleanUpCards(); } } } }
private void nextRound() { CheckForEndGame(); takenFromDeckOrDiscardPile = false; canNowDiscard = false; HumanCards.Clear(); ComputerCards.Clear(); RemainingDeck.Clear(); Discards.Clear(); Deal(); }
// Function to reset the game for next rounds // The game will continue if none of player has exceeded // maximum score to win private void resetGame() { Discards.Clear(); HumanCards.Clear(); ComputerCards.Clear(); RemainingDeck.Clear(); PossibleDeck.Clear(); startGame = false; playerTurn = true; humanDraw = false; humanDiscard = false; if (firstWinnerScore >= winingScore || secondWinnerScore >= winingScore) { scoreReset(); } Deal(); }
private async void Deal() { var deck = Cards.Shuffle(Cards.FullDeck); foreach (var card in deck) { RemainingDeck.Add(card); await Task.Delay(1); } for (int i = 0; i < 10; i++) { ComputerCards.Add(DrawTopCardFromDeck()); await Task.Delay(30); HumanCards.Add(DrawTopCardFromDeck()); await Task.Delay(30); } Discards.Add(DrawTopCardFromDeck()); }
private void ComputerDiscardCardFromHand() { if (humanDiscard) { ComputerPlayer.Move move = ComputerPlayer.ComputerMove(ComputerCards).Item1; Cards.Card discard = ComputerPlayer.ComputerMove(ComputerCards).Item2.Value; Discards.Add(discard); ComputerCards.Remove(discard); humanDiscard = false; playerTurn = true; if (move == ComputerPlayer.Move.Gin) { endGame(); } else if (move == ComputerPlayer.Move.Knock) { endGame(); } } }
private void SelectComputerCard(int playerCard) { foreach (int i in ComputerCards) { if (i == ComputerCards.Min() && i > playerCard) { ComputerSelection = i; } else if (i > playerCard && i < ComputerCards.Max()) { ComputerSelection = i; } else if (i == ComputerCards.Max() && i > playerCard) { ComputerSelection = i; } else if (ComputerCards.Max() < playerCard) { ComputerSelection = ComputerCards.Min(); } } }
private void ComputerTakeCardFromDiscardPile() { Cards.Card topDiscard = Discards[Discards.Count - 1]; if (humanDraw) { bool computerPickUp = ComputerPlayer.ComputerPickupDiscard(ComputerCards, topDiscard, PossibleDeck); if (computerPickUp) { ComputerCards.Add(topDiscard); Discards.Remove(topDiscard); humanDraw = false; ComputerDiscardCardFromHand(); } else { var topHiddenCard = RemainingDeck[RemainingDeck.Count - 1]; ComputerCards.Add(topHiddenCard); PossibleDeck.Remove(topHiddenCard); RemainingDeck.Remove(topHiddenCard); humanDraw = false; ComputerDiscardCardFromHand(); } } }
private void ComputerShuffle() { int minNum; int maxNum; _gameContainer.ComputerPlayers = new CustomBasicList <ComputerCards>(); PlayerList !.ForEach(thisPlayer => { int whatPlayer = thisPlayer.Id; if (PlayerList.Count() > 2) { DutchBlitzDeckCount.DoubleDeck = false; switch (whatPlayer) { case 1: minNum = 1; maxNum = 40; break; case 2: minNum = 41; maxNum = 80; break; case 3: minNum = 81; maxNum = 120; break; case 4: minNum = 121; maxNum = 160; break; default: throw new BasicBlankException("Not Supported"); } } else { DutchBlitzDeckCount.DoubleDeck = true; if (whatPlayer == 1) { minNum = 1; maxNum = 80; } else if (whatPlayer == 2) { minNum = 81; maxNum = 160; } else { throw new BasicBlankException("Not Supported"); } } var thisComputer = new ComputerCards(); thisComputer.Player = thisPlayer.Id; var thisList = GetOwnDutchBlitzCards(minNum, maxNum); thisList.ForEach(thisCard => thisCard.Player = whatPlayer); thisComputer.DeckList.AddRange(thisList); 10.Times(x => { thisComputer.StockList.Add(thisComputer.DeckList.First()); thisComputer.DeckList.RemoveFirstItem(); }); _gameContainer.MaxDiscard.Times(x => { thisComputer.Discard.Add(thisComputer.DeckList.First()); thisComputer.DeckList.RemoveFirstItem(); }); _gameContainer.ComputerPlayers.Add(thisComputer); }); }