Example #1
0
        public void MustCalculateTotalBasedOnNumberOfBooksSold(int quantitySold, double expectedTotal, Category bookCategory)
        {
            var sut    = new TotalCalculator();
            var result = sut.CalculateTotal(GenerateListWith(quantitySold, bookCategory));

            Assert.AreEqual(expectedTotal, result);
        }
Example #2
0
        public void MustCalculateTotalCombiningSciFiCategoryAndOtherCategories()
        {
            var sut          = new TotalCalculator();
            var completeList = new List <Book>();

            completeList.AddRange(GenerateListWith(3, Category.ScienceFiction));
            completeList.AddRange(GenerateListWith(5, Category.Math));

            var result = sut.CalculateTotal(completeList);

            Assert.AreEqual(268.80, result);
        }
        //Automatic draw for house turn
        private void houseTurn()
        {
            while (TotalCalculator.CalculateTotal(house.GetHand()) <= 16)
            {
                house.SetHand(house.TakeHit(cards, house.GetHand()));
                cards = Resizer.ResizeDeck(cards, 1);
            }
            displayHouseHand(house, labelHouseName, labelHouseCards, labelHouseTotal);

            panelBet.Hide();
            panelGameOver.Show();
            panelScore.Show();
            displayResults();
        }
        //Panel enter names
        private void btnOK2_Click(object sender, EventArgs e)
        {
            //Set player name
            if (count < playerCount)
            {
                players[count].Name = txtPlayerName.Text;

                txtPlayerName.Clear();

                count++;
                if (count < playerCount)
                {
                    labelPlayerCount2.Text = (count + 1).ToString();
                    players[count].Name    = txtPlayerName.Text;
                }
            }

            //All players are named
            if (count >= playerCount)
            {
                panelAddName.Hide();

                cards = deck.DealDeck(cards, players, house);

                //Display player hands
                panelPlayerHands.Show();
                for (int i = 0; i < players.Length; i++)
                {
                    playerPanelList[i].Show();
                }
                panelHouse.Show();

                if (players.Length == 1)
                {
                    display1Player();
                }
                else if (players.Length == 2)
                {
                    display2Player();
                }
                else if (players.Length == 3)
                {
                    display3Player();
                }
                else if (players.Length == 4)
                {
                    display4Player();
                }
                else if (players.Length == 5)
                {
                    display5Player();
                }
                else if (players.Length == 6)
                {
                    display6Player();
                }
                else
                {
                    display7Player();
                }

                //Display House hand
                string houseCards = "";
                int    houseTotal = TotalCalculator.CalculateTotal(house.GetHand());
                for (int i = 0; i < house.GetHand().Length; i++)
                {
                    if (i == 0 && houseTotal < 21)
                    {
                        houseCards += "XX\n";
                        i++;
                    }
                    houseCards += house.GetHand()[i].GetSuit().ToString() +
                                  house.GetHand()[i].GetFace();
                }
                labelHouseCards.Text = houseCards;
                if (houseTotal == 21)
                {
                    labelHouseTotal.Text = TotalDisplayer.DisplayTotal(TotalCalculator.CalculateTotal(house.GetHand()));
                }

                panelBet.Show();
                labelPlayerTurnName.Text = players[betCounter].Name;
            }
        }
        //display the results in the score panel
        private void displayResults()
        {
            scoreLabelPlayerList.Add(labelScorePlayer1);
            scoreLabelPlayerList.Add(labelScorePlayer2);
            scoreLabelPlayerList.Add(labelScorePlayer3);
            scoreLabelPlayerList.Add(labelScorePlayer4);
            scoreLabelPlayerList.Add(labelScorePlayer5);
            scoreLabelPlayerList.Add(labelScorePlayer6);
            scoreLabelPlayerList.Add(labelScorePlayer7);

            outcomeLabelPlayerList.Add(outcomePlayer1);
            outcomeLabelPlayerList.Add(outcomePlayer2);
            outcomeLabelPlayerList.Add(outcomePlayer3);
            outcomeLabelPlayerList.Add(outcomePlayer4);
            outcomeLabelPlayerList.Add(outcomePlayer5);
            outcomeLabelPlayerList.Add(outcomePlayer6);
            outcomeLabelPlayerList.Add(outcomePlayer7);

            //Find players' highest score
            int highScore = 0;

            for (int i = 0; i < players.Length; i++)
            {
                if (TotalCalculator.CalculateTotal(players[i].GetHand()) > highScore && TotalCalculator.CalculateTotal(players[i].GetHand()) < 22)
                {
                    highScore = TotalCalculator.CalculateTotal(players[i].GetHand());
                }
            }

            //Player outcome
            for (int i = 0; i < players.Length; i++)
            {
                scoreLabelPlayerList[i].Show();
                scoreLabelPlayerList[i].Text = players[i].Name;

                outcomeLabelPlayerList[i].Show();
                if (TotalCalculator.CalculateTotal(players[i].GetHand()) < 22)
                {
                    if (TotalCalculator.CalculateTotal(house.GetHand()) > 21)
                    {
                        outcomeLabelPlayerList[i].Text = "Wins!";
                    }
                    else if (TotalCalculator.CalculateTotal(players[i].GetHand()) > TotalCalculator.CalculateTotal(house.GetHand()))
                    {
                        outcomeLabelPlayerList[i].Text = "Wins!";
                    }
                    else if (TotalCalculator.CalculateTotal(players[i].GetHand()) == TotalCalculator.CalculateTotal(house.GetHand()) &&
                             TotalCalculator.CalculateTotal(players[i].GetHand()) == highScore)
                    {
                        outcomeLabelPlayerList[i].Text = "Tie!";
                    }
                    else
                    {
                        outcomeLabelPlayerList[i].Text = "Loses!";
                    }
                }
                else
                {
                    outcomeLabelPlayerList[i].Text = "Loses!";
                }
            }

            //House outcome
            labelScoreHouse.Show();
            outcomeHouse.Show();
            labelScoreHouse.Text = house.Name;
            if (TotalCalculator.CalculateTotal(house.GetHand()) == highScore)
            {
                outcomeHouse.Text = "Tie!";
            }
            else if (TotalCalculator.CalculateTotal(house.GetHand()) > highScore && TotalCalculator.CalculateTotal(house.GetHand()) < 22)
            {
                outcomeHouse.Text = "Wins!";
            }
            else
            {
                outcomeHouse.Text = "Loses!";
            }
        }
        //Panel hit or stay
        private void btnHit_Click(object sender, EventArgs e)
        {
            //Not bust or blackjack, your turn
            if (TotalCalculator.CalculateTotal(players[betCounter].GetHand()) < 21)
            {
                players[betCounter].SetHand(players[betCounter].TakeHit(cards, players[betCounter].GetHand()));
                cards = Resizer.ResizeDeck(cards, 1);

                if (players.Length == 1)
                {
                    display1Player();
                }
                else if (players.Length == 2)
                {
                    display2Player();
                }
                else if (players.Length == 3)
                {
                    display3Player();
                }
                else if (players.Length == 4)
                {
                    display4Player();
                }
                else if (players.Length == 5)
                {
                    display5Player();
                }
                else if (players.Length == 6)
                {
                    display6Player();
                }
                else
                {
                    display7Player();
                }

                //blackjack or bust, next players turn
                if (TotalCalculator.CalculateTotal(players[betCounter].GetHand()) >= 21)
                {
                    //Any players left? No, house turn
                    if (betCounter < players.Length - 1)
                    {
                        betCounter++;
                        labelPlayerTurnName.Text = players[betCounter].Name;
                    }
                    else
                    {
                        houseTurn();
                    }
                }
            }
            //blackjack or bust, next players turn
            else
            {
                //Any players left? No, house turn
                if (betCounter < players.Length - 1)
                {
                    betCounter++;
                    labelPlayerTurnName.Text = players[betCounter].Name;
                }
                else
                {
                    houseTurn();
                }
            }
        }
 private void displayHouseHand(House house, Label labelName, Label labelCards, Label labelTotal)
 {
     labelName.Text = house.Name;
     displayHouseCards(house, labelCards);
     labelTotal.Text = TotalDisplayer.DisplayTotal(TotalCalculator.CalculateTotal(house.GetHand()));
 }
 private void displayHand(Player player, Label labelName, Label labelCards, Label labelTotal)
 {
     labelName.Text = player.Name;
     displayCards(player, labelCards);
     labelTotal.Text = TotalDisplayer.DisplayTotal(TotalCalculator.CalculateTotal(player.GetHand()));
 }