Beispiel #1
0
        /// <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);;
            }
        }
Beispiel #2
0
        /// <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);;
            }
        }
Beispiel #3
0
        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");
            }
        }