/// <summary> /// Checks if card player clicked on is valid, plays it then passes turn to CPU /// </summary> /// <param name="clickedCard"></param> private void TryToPlayCard(Card clickedCard) { Card discard = Crazy_Eights_Game.CurrentDiscard(); Suit discardSuit = discard.GetSuit(); // check for crazy eight suit if (discard.GetFaceValue() == FaceValue.Eight) { discardSuit = eightsuit; } // Check if card is valid and play it if (Crazy_Eights_Game.IsGoodClick(clickedCard, discardSuit)) { // Update GUI with new cards discardPile.Image = Images.GetCardImage(clickedCard); DisplayDrawPile(); DisplayGuiHand(Crazy_Eights_Game.GetHand(1), pTableLayoutPanel, 1); //MessageBox.Show(clickedCard.ToString(false, true), "Clicked"); // Check for empty hand after turn if (Crazy_Eights_Game.EmptyHand(1)) { MessageBox.Show("Player wins!", "Game Over"); this.Close(); } // end if // CPU Go if (clickedCard.GetFaceValue() == FaceValue.Eight) { using (Eight_suit eight_suit = new Eight_suit()) { if (eight_suit.ShowDialog() == System.Windows.Forms.DialogResult.OK) { eightsuit = eight_suit.SelectedSuit; //instructionLabel.Text = "Last crazy eights suit is" + eightsuit.ToString(); } else { Card card = Crazy_Eights_Game.CurrentDiscard(); eightsuit = card.GetSuit(); } } } CpuGo(); } else { MessageBox.Show(clickedCard.ToString(false, true) + " is not a valid option.", "Clicked"); } // end if } // end TryToPlayCard
} // end dealButton_Click /// <summary> /// Performs the CPU's turn then passes back to the player /// </summary> private void CpuGo() { RefreshTheFormThenPause(); Card discard = Crazy_Eights_Game.CurrentDiscard(); Suit discardSuit = discard.GetSuit(); // check for player selected crazy eight suit if (discard.GetFaceValue() == FaceValue.Eight) { discardSuit = eightsuit; } // end if // reset the discard suit for players next turn if the CPU played something if (Crazy_Eights_Game.ComputerTurn(discardSuit)) { eightsuit = Crazy_Eights_Game.CurrentDiscard().GetSuit(); discardSuit = Crazy_Eights_Game.CurrentDiscard().GetSuit(); } // end if // check for tied game if (Crazy_Eights_Game.MaxHand(1) && Crazy_Eights_Game.MaxHand(0) && !Crazy_Eights_Game.PlayerHasMove(discardSuit)) { MessageBox.Show("Neither player can play, game is a tie!", "Game Over"); this.Close(); } // end if DisplayGuiHand(Crazy_Eights_Game.GetHand(0), cTableLayoutPanel, 0); DisplayDiscardPile(); // Checks for empty hand after turn if (Crazy_Eights_Game.EmptyHand(0) && !Crazy_Eights_Game.EmptyHand(1)) { MessageBox.Show("Computer Wins!", "Game Over"); this.Close(); } // end if // Pass back to player if (!Crazy_Eights_Game.PlayerHasMove(discardSuit)) { dealButton.Enabled = true; } // end if } // end CpuGo
/// <summary> /// Displays the discard pile; /// </summary> private void DisplayDiscardPile() { Card card = Crazy_Eights_Game.CurrentDiscard(); discardPile.Image = Images.GetCardImage(card); }