public void TestThatIntersectionCanDetemineWhenPlayerHasExistingConnection()
 {
     var world = new World(3, 0, null);
     Player player = new Player("sam", Color.Turquoise, world);
     player.getHand().incrementAllResources(3);
     world.addPlayer(player);
     world.setCurrentPlayer(player.getName());
     Assert.AreNotEqual(Color.White, world.tryToBuildAtIntersection(new Point(2, 4)));
     Assert.AreNotEqual(Color.White, world.roadButtonClicked(new Point(4, 4)));
     Assert.True(world.getMap().getIslandMap().getIntAtIndex(new Point(2, 5)).playerHasExistingConnection(Color.Turquoise));
 }
 /*
  *  Allow the player to pick any two available resources from the bank for no cost.
  */
 public void loadYearOfPlenty(Player pl)
 {
     initiatingPlayer         = pl;
     lblTradeName.Text        = "Bank";
     lblPlayerTitle.Text      = pl.getName();
     lblPlayerTitle.BackColor = pl.getColor();
     //Allow the player to choose resources much like they can with the harbor trade
     for (int i = 0; i < 5; i++)
     {
         ResourceSelector otherSelector = new ResourceSelector((Board.ResourceType)i);
         otherResourceSelectors.Add(otherSelector);
         pnlOther.Controls.Add(otherSelector);
         otherSelector.Location = new Point(5, i * otherSelector.Height + 1);
         otherSelector.Click   += yearOfPlentyClickResourceSelector;
         otherSelector.hideControls();
     }
 }
        /*
         *  Allow the player to trade with the chosen harbor.
         */
        public void loadHarborTrade(Harbor hb, Player pl)
        {
            //Auto selects resources from other party (some trades allows the player to choose the resource)
            //Build the window based on the harbor.
            initiatingPlayer = pl;
            createResourceSelectors(false, false);
            minimumPlayerInput       = hb.getRequiredResourceCount();
            lblTradeName.Text        = "Harbor";
            lblPlayerTitle.Text      = pl.getName();
            lblPlayerTitle.BackColor = pl.getColor();
            foreach (ResourceSelector sel in playerResourceSelectors)
            {
                sel.Click += lockedTradePlayerClickPlayerResource;
            }

            if (hb.getTradeOutputResource() == Board.ResourceType.Desert)
            {
                //The player may choose any resource to trade for.
                foreach (ResourceSelector select in otherResourceSelectors)
                {
                    select.Click += playerClickOtherResource;
                }
            }
            else
            {
                //The player is only allowed to choose the one resource.
                canClearOther = false;
                foreach (ResourceSelector select in otherResourceSelectors)
                {
                    if (select.type == hb.getTradeOutputResource())
                    {
                        select.setSelected(true);
                    }
                    else
                    {
                        select.Hide();
                    }
                }
            }
        }
        /*
         *  Allow the player to trade any 4 of the same resource for any one other available resource from the bank.
         */
        public void loadBankTrade(Player pl)
        {
            //Bank automatically selects the number of resources on the other party
            initiatingPlayer = pl;

            //Auto selects resources from other party (some trades allows the player to choose the resource)
            //Build the window based on the harbor.
            initiatingPlayer = pl;
            createResourceSelectors(false, false);
            minimumPlayerInput       = 4;
            lblTradeName.Text        = "Bank";
            lblPlayerTitle.Text      = pl.getName();
            lblPlayerTitle.BackColor = pl.getColor();
            foreach (ResourceSelector sel in playerResourceSelectors)
            {
                sel.Click += lockedTradePlayerClickPlayerResource;
            }

            foreach (ResourceSelector select in otherResourceSelectors)
            {
                select.Click += playerClickOtherResource;
            }
        }
 /*
  *
  */
 public void loadMonopoly(Player pl)
 {
     pnlOther.Visible          = false;
     btnClearSelection.Visible = false;
     lblInstructions.Text     += "Please select the resource you wish to take from the other players.";
     lblInstructions.Visible   = true;
     lblTradeName.Text         = "";
     lblPlayerTitle.Text       = pl.getName();
     lblPlayerTitle.BackColor  = pl.getColor();
     btnAccept.Click          -= acceptClickToBank;
     btnAccept.Click          += acceptClickMonopoly;
     btnAccept.Enabled         = false;
     //Load all resource selectors.
     for (int i = 0; i < 5; i++)
     {
         ResourceSelector resSelect = new ResourceSelector((Board.ResourceType)i);
         resSelect.hideControls();
         pnlPlayer.Controls.Add(resSelect);
         resSelect.Location = new Point(5, i * resSelect.Height + 1);
         playerResourceSelectors.Add(resSelect);
         resSelect.Click += clickMonopoly;
     }
 }
        /*
         *  Allow the player to trade with another player.
         */
        public void loadPlayerTrade(Player currentPlayer, Player otherPlayer)
        {
            //Both players choose their resources.
            initiatingPlayer         = currentPlayer;
            lblPlayerTitle.Text      = currentPlayer.getName();
            lblPlayerTitle.BackColor = currentPlayer.getColor();
            this.otherPlayer         = otherPlayer;
            lblTradeName.Text        = otherPlayer.getName();
            lblTradeName.BackColor   = otherPlayer.getColor();
            otherPlayer.Current      = true;
            btnAccept.Click         -= acceptClickToBank;
            btnAccept.Click         += acceptClickPlayerToPlayer;
            createResourceSelectors(false, false);
            foreach (ResourceSelector sel in playerResourceSelectors)
            {
                sel.Click += ptpClickResourceSelectorPlayer;
            }

            foreach (ResourceSelector sel in otherResourceSelectors)
            {
                sel.Click += ptpClickResourceSelectorOther;
            }
        }
 public static string PlayerEndedTurn(Player currentPlayer)
 {
     return(currentPlayer.getName() + " has ended their turn.");
 }
 public static string PlayerGoNoResourceFromPlayer(Player toPlayer, Player fromPlayer)
 {
     return(toPlayer.getName() + " got no resource cards from " + fromPlayer.getName() + " because they have none to give.");
 }
 public static string PlayerGotResourceFromPlayer(Player toPlayer, Player fromPlayer, Board.ResourceType res)
 {
     return(toPlayer.getName() + " got " + Board.RESOURCE_NAMES[(int)res] + " from " + fromPlayer.getName() + ".");
 }
 public static String LocationOwnedBy(Player owner)
 {
     return("This location is already owned by " + owner.getName());
 }
        public void TestThatBuildingRoadReturnsWhiteIfIndexIsOutOfRange()
        {
            World world = new World(3, 0, null);
            Player player1 = new Player("Meeeeee!", Color.HotPink, world);
            world.addPlayer(player1);
            world.setCurrentPlayer(player1.getName());

            // Give player 5 resources of each except ore
            player1.getHand().modifyBrick(5);
            player1.getHand().modifyGrain(5);
            player1.getHand().modifyLumber(5);
            player1.getHand().modifyWool(5);
            world.tryToBuildAtIntersection(new Point(0, 2));
            Assert.AreEqual(Color.White, world.roadButtonClicked(new Point(52, 1)));
        }
 public static string PlayerBuiltACity(Player player)
 {
     return(player.getName() + " built a city.");
 }
 public static string PlayerWinsDiceRoll(Player player)
 {
     return("Congrats player " + player.getName() + " you won the roll and are the first player!");
 }
        public void TestRoadButtonClicked()
        {
            World w = new World(3, 0, null);
            Player player1 = new Player("Meeeeee!", Color.HotPink, w);
            w.addPlayer(player1);
            w.setCurrentPlayer(player1.getName());
            Color C = w.roadButtonClicked(new Point(2, 2));
            //insufficiant resources
            Assert.AreEqual(Color.White, C);

            w.currentPlayer.getHand().incrementAllResources(5);

            //point without adjoining settlement
            C = w.roadButtonClicked(new Point(3, 2));
            Assert.AreEqual(Color.White, C);
            //even point with resources
            w.tryToBuildAtIntersection(new Point(0, 3));
            C = w.roadButtonClicked(new Point(0, 0));
            Assert.AreEqual(Color.HotPink, C);
            //odd point with resources
            w.tryToBuildAtIntersection(new Point(1, 5));
            C = w.roadButtonClicked(new Point(3, 2));
            Assert.AreEqual(Color.HotPink, C);
            //point that is not in the grid
            C = w.roadButtonClicked(new Point(50, 2));
            Assert.AreEqual(Color.White, C);
            //point that has not been initialized
            w.catanMap = null;
            C = w.roadButtonClicked(new Point(3, 2));
            Assert.AreEqual(Color.Black, C);
        }
        public void TestTryToBuildCityAtIntersectionWithoutEnoughResources()
        {
            World w = new World(3, 0, null);
            Player player1 = new Player("Meeeeee!", Color.HotPink, w);
            w.addPlayer(player1);
            w.setCurrentPlayer(player1.getName());

            w.currentPlayer.getHand().incrementAllResources(1);

            w.tryToBuildAtIntersection(new Point(3, 4));
            Color c = w.tryToBuildAtIntersection(new Point(3, 4));
            Assert.AreEqual(Color.White, c);
        }
        public void TestThatVerticalRoadIsBuiltIfPlayerHasSettlement()
        {
            World world = new World(3, 0, null);
            Player player1 = new Player("Meeeeee!", Color.HotPink, world);
            world.addPlayer(player1);
            world.setCurrentPlayer(player1.getName());

            // Give player 5 resources of each except ore
            player1.getHand().modifyBrick(5);
            player1.getHand().modifyGrain(5);
            player1.getHand().modifyLumber(5);
            player1.getHand().modifyWool(5);
            world.tryToBuildAtIntersection(new Point(0, 2));
            Assert.AreEqual(Color.HotPink, world.roadButtonClicked(new Point(1, 0)));
        }
        public void TestThatSettlementGetsBuild()
        {
            World world = new World(3, 0, null);
            Player player1 = new Player("Meeeeee!", Color.HotPink, world);
            world.addPlayer(player1);
            world.setCurrentPlayer(player1.getName());

            // Give player the resources needed for a settlement
            player1.getHand().modifyBrick(1);
            player1.getHand().modifyGrain(1);
            player1.getHand().modifyLumber(1);
            player1.getHand().modifyWool(1);
            Assert.AreEqual(Color.HotPink, world.tryToBuildAtIntersection(new Point(3, 3)));
            Assert.AreEqual(Global_Variables.GAME_PIECE.SETTLEMENT,
                world.getMap().getIslandMap().getIntAtIndex(3, 3).getPieceType());

            // Give player the resources needed for city
            player1.getHand().modifyOre(5);
            player1.getHand().modifyGrain(5);
            Assert.AreEqual(Color.Black, world.tryToBuildAtIntersection(new Point(3, 3)));
            Assert.AreEqual(Global_Variables.GAME_PIECE.CITY,
                world.getMap().getIslandMap().getIntAtIndex(3, 3).getPieceType());
        }
 public static string PlayerRolledANumber(Player player, int number)
 {
     return(player.getName() + " rolled " + (number == 8 || number == 11 ? "an " : "a ") + number + ".");
 }
 public static string PlayerPurchasedADevCard(Player player)
 {
     return(player.getName() + " purchased a development card.");
 }
 public static string PlayerDiceRollPrompt(Player player)
 {
     return(player.getName() + " please roll the dice.");
 }
 public static string RobberHasMoved(Player player)
 {
     return(player.getName() + " has moved the robber.");
 }
 public static string PlayerPlacedASettlement(Player player)
 {
     return(player.getName() + " placed a settlement.");
 }
 public void testGetRollNumber()
 {
     World w = new World(3, 0, null);
     Player player1 = new Player("Meeeeee!", Color.HotPink, w);
     w.addPlayer(player1);
     w.setCurrentPlayer(player1.getName());
     //test getting roll number without rolling
     Assert.AreEqual(0, w.getRollNumber());
     w.numOfCompletedRounds = 5;
     //test getting roll number after rolling
     w.rollDice();
     Assert.IsTrue(w.getRollNumber() < 13 && w.getRollNumber() > 1);
 }
 public static string PlayerPlacedARoad(Player player)
 {
     return(player.getName() + " placed a road.");
 }
 public void testRollDice()
 {
     World w = new World(3, 0, null);
     Player player1 = new Player("Meeeeee!", Color.HotPink, w);
     w.addPlayer(player1);
     w.setCurrentPlayer(player1.getName());
     //test without completeing early rounds
     w.rollDice();
     Assert.IsFalse(w.currentPlayer.hasRolled);
     //test extra roll without completeing early rounds
     w.rollDice();
     Assert.IsFalse(w.currentPlayer.hasRolled);
     w.numOfCompletedRounds = 5;
     //test first roll after early rounds
     w.rollDice();
     Assert.IsTrue(w.currentPlayer.hasRolled);
     //test extra roll after early rounds
     w.rollDice();
     Assert.IsTrue(w.currentPlayer.hasRolled);
 }
 public static string PlayerUsedRoadBuilding(Player player)
 {
     return(player.getName() + " used a Road Building card.");
 }
        public void TestConstructor()
        {
            var player0 = new Player();
            Assert.NotNull(player0);

            String playerName = "player1";
            Color playerColor = Color.Beige;
            var world = new World();
            var player1 = new Player(playerName, playerColor, world);
            Assert.IsTrue(player1.getColor() == playerColor);
            Assert.IsTrue(player1.getName() == playerName);
        }
 public static string PlayerMoveThief(Player player)
 {
     return(player.getName() + " please select a terrain tile to move the thief into.");
 }
Example #29
0
        public void checkForWinner()
        {
            //Yay!

            //Update the largest army and longest road stuff
            Player lapl = null;
            Player llpl = null;

            foreach (Player pl in playerOrder)
            {
                int arm = pl.getArmySize();
                if (arm > largestArmy)
                {
                    lapl        = pl;
                    largestArmy = arm;
                }

                arm = pl.getLongestRoadCount();
                if (arm > longestRoad)
                {
                    llpl        = pl;
                    longestRoad = arm;
                }
                pl.setLongestRoad(false);
                pl.setLargestArmy(false);
            }
            if (largestArmy >= 3)
            {
                if (lapl != null)
                {
                    foreach (Player pl in playerOrder)
                    {
                        pl.setLargestArmy(false);
                    }
                    lapl.setLargestArmy(true);
                }
            }
            if (longestRoad >= 5)
            {
                if (llpl != null)
                {
                    foreach (Player pl in playerOrder)
                    {
                        pl.setLongestRoad(false);
                    }
                    llpl.setLongestRoad(true);
                }
            }

            bool   winner        = false;
            Player winningPlayer = null;

            foreach (Player pl in playerOrder)
            {
                int vps = Player.calculateVictoryPoints(true, pl);
                if (vps >= 10)
                {
                    winningPlayer = pl;
                    winner        = true;
                }
                else
                {
                    pl.updateScore();
                }
            }
            if (winner)
            {
                currentGameState = GameState.End;
                currentGameEvent.endExecution();
                addEventText(winningPlayer.getName() + " has won!");
            }
        }