/* * This will allow the player to choose what resources they loose when * the dice land on a "7" while the player has more than 7 resources on hand. */ public void loadPlayerResourceLoss(Player pl) { //Load the player's resource selectors for (int i = 0; i < 5; i++) { Board.ResourceType resType = (Board.ResourceType)i; ResourceSelector playerSelector = new ResourceSelector(resType); playerResourceSelectors.Add(playerSelector); pnlPlayer.Controls.Add(playerSelector); playerSelector.Location = new Point(5, i * playerSelector.Height + 1); playerSelector.hideControls(); playerSelector.Click += playerClickResourceSelectorRobber; } lblInstructions.Visible = true; btnAccept.Enabled = false; initiatingPlayer = pl; lblPlayerTitle.Text = pl.getName(); lblPlayerTitle.BackColor = pl.getColor(); //Disable the cancel button btnCancel.Visible = false; int numToGive = pl.getTotalResourceCount() / 2; //Since this is an integer, VS will automatically drop the decimal which is essentailly the same as floor(count/2) minimumPlayerInput = numToGive; //Hide the other section lblTradeName.Text = ""; pnlOther.Visible = false; //Show the player some instructions. lblInstructions.Text = "Please select " + numToGive + " resource to give up."; btnClearSelection.Click += playerClickResourceSelectorRobber; }
public bool canBuildAtIntersection(Player player, int rounds) { bool canBuild; if (this.hasABuilding()) // Cannot build here if this intersection has a building { canBuild = false; } else if (this.areAllThreeSurroundingIntersectionsAvailableToBuild()) // We can build here because nobody around already built something! { // This player must have a road leading here IF it is not the first round if (!playerHasExistingConnection(player.getColor()) && rounds >= 2) { canBuild = false; } else { canBuild = true; } } else // There is a conflict because a surrounding intersection already has a building { canBuild = false; } return canBuild; }
/* * 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 bool buildHorizontalRoad(Point coords, Player player) { int xVal = coords.X; int yVal = coords.Y; int intRow, intCol = 0; intRow = xVal/2; if (xVal == 0 || xVal == 10) { intCol = yVal + 2; } else if (xVal == 2 || xVal == 8) { intCol = yVal + 1; } else if (xVal == 4 || xVal == 6) { intCol = yVal; } else { } // throw exception? if (roadHasBuildingOrConnectingRoad(new Point(intRow, intCol), new Point(intRow, intCol + 1), player)) { map[intRow, intCol].connections[2].buildRoad(player.getColor()); map[intRow, intCol + 1].connections[0].buildRoad(player.getColor()); player.addConnection(map[intRow, intCol].connections[2]); return true; } else return false; }
private bool roadHasConnectingRoad(Point p1, Point p2, Player player) { bool flag; bool hasRoad = false; bool roadIsCorrectPlayer = false; if (map[p1.X, p1.Y].connections[0].isBuilt()) { hasRoad = true; roadIsCorrectPlayer = map[p1.X, p1.Y].connections[0].getRoadColor() == player.getColor(); } if (map[p1.X, p1.Y].connections[1].isBuilt() && !roadIsCorrectPlayer) { hasRoad = true; roadIsCorrectPlayer = map[p1.X, p1.Y].connections[1].getRoadColor() == player.getColor(); } if (map[p1.X, p1.Y].connections[2].isBuilt() && !roadIsCorrectPlayer) { hasRoad = true; roadIsCorrectPlayer = map[p1.X, p1.Y].connections[2].getRoadColor() == player.getColor(); } if (map[p2.X, p2.Y].connections[1].isBuilt() && !roadIsCorrectPlayer) { hasRoad = true; roadIsCorrectPlayer = map[p2.X, p2.Y].connections[1].getRoadColor() == player.getColor(); } if (map[p2.X, p2.Y].connections[2].isBuilt() && !roadIsCorrectPlayer) { hasRoad = true; roadIsCorrectPlayer = map[p2.X, p2.Y].connections[2].getRoadColor() == player.getColor(); } if (map[p2.X, p2.Y].connections[0].isBuilt() && !roadIsCorrectPlayer) { hasRoad = true; roadIsCorrectPlayer = map[p2.X, p2.Y].connections[0].getRoadColor() == player.getColor(); } flag = hasRoad && roadIsCorrectPlayer && !hasOtherPlayerIntersection(p1, player); return flag; }
private bool hasOtherPlayerIntersection(Point p1, Player player) { return map[p1.X, p1.Y].hasABuilding() && map[p1.X, p1.Y].color != player.getColor(); }
public bool buildVerticalRoad(Point coords, Player player) { int xVal = coords.X; int yVal = coords.Y; int intRow, intCol = 0; intRow = xVal/2; if (xVal == 1 || xVal == 9) { intCol = yVal*2 + 2; } else if (xVal == 3 || xVal == 7) { intCol = yVal*2 + 1; } else if (xVal == 5) { intCol = yVal*2; } else { } // Throw exception? if (roadHasBuildingOrConnectingRoad(new Point(intRow, intCol), new Point(intRow + 1, intCol), player)) { map[intRow, intCol].connections[1].buildRoad(player.getColor()); map[intRow + 1, intCol].connections[1].buildRoad(player.getColor()); player.addConnection(map[intRow, intCol].connections[1]); return true; } else return false; }
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); }