/// <summary> /// Method that handles all activities for player 3 and resets configuration for player 1. /// </summary> private void Player3_Turn() { try { if (game.IsActive) { timeLeft = 25; game.Turn = player3; picP2.BackColor = Color.FromArgb(0, 128, 55); picP3.BackColor = Color.FromArgb(255, 255, 128); lblTurnName.Text = $"{player3.Name}'s"; //Pauses the turn for the player between 1-5 seconds,otherwise it will turns will almost //become instantenous PauseForMilliSeconds(r.Next(1000, 5000)); player3.Turn(aDeck, dumpCards, PanelDump); UpdateStockCount(); // Handles dump card for player 3 PauseForMilliSeconds(r.Next(5000, 7000)); DumpCard(player3); player3.PlayHand.Sort(); Hand.ShowHandBack(player3.CardsPanel, player3.PlayHand); player3.ScoreUpdate(); //Checkgame status CheckGameStatus(); //reset to P1's Turn picP3.BackColor = Color.FromArgb(0, 128, 55); picP1.BackColor = Color.FromArgb(255, 255, 128); PanelHandP1.Enabled = false; lblTurnName.Text = $"{player1.Name}'s"; timeLeft = 25; game.Turn = player1; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);; } }
/// <summary> /// Method that handles all activities for player 2. /// </summary> private void Player2_Turn() { try { if (game.IsActive) { //Reset timer info timeLeft = 25; timerP1.Start(); game.Turn = player2; picP1.BackColor = Color.FromArgb(0, 128, 55); picP2.BackColor = Color.FromArgb(255, 255, 128); lblTurnName.Text = $"{player2.Name}'s"; //Pauses the turn for the player between 1-5 seconds,otherwise it will turns will almost //become instantenous PauseForMilliSeconds(r.Next(1000, 5000)); player2.Turn(aDeck, dumpCards, PanelDump); UpdateStockCount(); //Pauses the turn for the player between 5-15 seconds,otherwise it will turns will almost //become instantenous PauseForMilliSeconds(r.Next(5000, 7000)); // Handles dump card for player 2 DumpCard(player2); player2.PlayHand.Sort(); Hand.ShowHandBack(player2.CardsPanel, player2.PlayHand); //Check game status CheckGameStatus(); //Calls for Player 3's turn Player3_Turn(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);; } }
private void btnNewGame_Click(object sender, EventArgs e) { try { if (game.GameNumber == 1) { if (cmbHeroes.SelectedIndex == -1) { MessageBox.Show("Please select your hero", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (String.IsNullOrEmpty(txtPlayerAlias.Text)) { MessageBox.Show("Please put in an alias", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } Hero hero = new Hero(); hero = heroes[cmbHeroes.SelectedIndex + 1]; //Set up player 1 player1.Name = hero.Name; player1.AvatarImg = hero.AvatarImg; player1.Number = 1; player1.PictureBox = picP1; player1.CardsPanel = PanelHandP1; player1.ComboCardPanels = new List <Panel>() { PanelCmbP1A, PanelCmbP1B, PanelCmbP1C, PanelCmbP1D }; player1.PlayerType = PlayerType.HumanPlayer; picP1.Image = Image.FromFile(player1.AvatarImg); lbl1.Text = player1.Name; lblAlias.Text = $"Alyas \"{txtPlayerAlias.Text}\""; //Set up player 2 hero = heroes[r.Next(1, 4)]; while (hero.Name == player1.Name) { hero = heroes[r.Next(1, 4)]; } player2.Name = hero.Name; player2.AvatarImg = hero.AvatarImg; player2.Number = 1; player2.PictureBox = picP1; player2.CardsPanel = PanelHandP2; player2.ComboCardPanels = new List <Panel>() { PanelCmbP2A, PanelCmbP2B, PanelCmbP2C, PanelCmbP2D }; player2.PlayerType = PlayerType.ComputerPlayer; picP2.Image = Image.FromFile(player2.AvatarImg); lblP2.Text = player2.Name; //Set up player 3 hero = heroes[r.Next(1, 4)]; while (hero.Name == player1.Name || hero.Name == player2.Name) { hero = heroes[r.Next(1, 4)]; } player3.Name = hero.Name; player3.AvatarImg = hero.AvatarImg; player3.Number = 1; player3.PictureBox = picP1; player3.CardsPanel = PanelHandP3; player3.ComboCardPanels = new List <Panel>() { PanelCmbP3A, PanelCmbP3B, PanelCmbP3C, PanelCmbP3D }; player3.PlayerType = PlayerType.ComputerPlayer; picP3.Image = Image.FromFile(player3.AvatarImg); lblP3.Text = player3.Name; List <Player> players = new List <Player>() { player1, player2, player3 }; game.Players = players; } SetUp(); //Setup timer info and game status info timeLeft = 25; timerP1.Start(); game.IsActive = true; //Set up stat label lblGameNum.Text = game.GameNumber.ToString(); lblP1Wins.Text = player1Wins.ToString(); //Clear combo card panels and dump card panel player1.ComboCardPanels.ForEach(c => c.Controls.Clear()); player2.ComboCardPanels.ForEach(c => c.Controls.Clear()); player3.ComboCardPanels.ForEach(c => c.Controls.Clear()); PanelDump.Controls.Clear(); //Set list of cards to default groupCards = new List <Card>(); dumpCards = new List <Card>(); //Make controls visible foreach (Control c in this.Controls) { c.Visible = true; } PanelSelection.Visible = false; //Deal card to players player1.PlayHand = aDeck.DealHand(13); player2.PlayHand = aDeck.DealHand(13); player3.PlayHand = aDeck.DealHand(13); //Sort player's card to arrange cards with same suit and ascending facevalue player1.PlayHand.Sort(); player2.PlayHand.Sort(); player3.PlayHand.Sort(); //Show cards of players in the panel ShowHandFront(player1.CardsPanel, player1.PlayHand); Hand.ShowHandBack(player2.CardsPanel, player2.PlayHand); Hand.ShowHandBack(player3.CardsPanel, player3.PlayHand); // Show player 1 score UpdatePlayer1Score(); //Set up stock area lblStockCount.Text = $"({aDeck.Count.ToString()})"; PictureBox stockPic = new PictureBox() { Image = Image.FromFile($@"images\cardback.png"), Width = 71, Height = 100, Cursor = System.Windows.Forms.Cursors.Hand }; stockPic.Click += Stock_Click; panelStock.Controls.Add(stockPic); // Prompt Player 1 turn picP1.BackColor = Color.FromArgb(255, 255, 128); lblTurnName.Text = $"{player1.Name}'s"; timerP1.Enabled = true; game.Turn = player1; //timerP1.Start(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } }