//Initialize each property/space of game board boardSpaces[] static void populateBoard() { boardSpaces[0] = new BoardSpace("Go", 0); boardSpaces[1] = new BoardSpace("Mediterranean Avenue", 60); boardSpaces[2] = new BoardSpace("Community Chest", 0); boardSpaces[3] = new BoardSpace("Baltic Avenue", 60); boardSpaces[4] = new BoardSpace("Income Tax", 0); boardSpaces[5] = new BoardSpace("Reading Railroad", 200); boardSpaces[6] = new BoardSpace("Oriental Avenue", 100); boardSpaces[7] = new BoardSpace("Chance", 0); boardSpaces[8] = new BoardSpace("Vermont Avenue", 100); boardSpaces[9] = new BoardSpace("Connecticut Avenue", 120); boardSpaces[10] = new BoardSpace("Jail", 0); boardSpaces[11] = new BoardSpace("St. Charles Place", 140); boardSpaces[12] = new BoardSpace("Electric Company", 150); boardSpaces[13] = new BoardSpace("States Avenue", 140); boardSpaces[14] = new BoardSpace("Virginia Avenue", 160); boardSpaces[15] = new BoardSpace("Pennsylvania Railroad", 200); boardSpaces[16] = new BoardSpace("St. James Place", 180); boardSpaces[17] = new BoardSpace("Community Chest", 0); boardSpaces[18] = new BoardSpace("Tennessee Avenue", 180); boardSpaces[19] = new BoardSpace("New York Avenue", 200); boardSpaces[20] = new BoardSpace("Free Parking", 0); boardSpaces[21] = new BoardSpace("Kentucky Avenue", 220); boardSpaces[22] = new BoardSpace("Chance", 0); boardSpaces[23] = new BoardSpace("Indiana Avenue", 220); boardSpaces[24] = new BoardSpace("Illinois Avenue", 240); boardSpaces[25] = new BoardSpace("B. & O. Railroad", 200); boardSpaces[26] = new BoardSpace("Atlantic Avenue", 260); boardSpaces[27] = new BoardSpace("Ventnor Avenue", 260); boardSpaces[28] = new BoardSpace("Water Works", 150); boardSpaces[29] = new BoardSpace("Marvin Gardens", 280); boardSpaces[30] = new BoardSpace("Go To Jail", 0); boardSpaces[31] = new BoardSpace("Pacific Avenue", 300); boardSpaces[32] = new BoardSpace("North Carolina Avenue", 300); boardSpaces[33] = new BoardSpace("Community Chest", 0); boardSpaces[34] = new BoardSpace("Pennsylvania Avenue", 320); boardSpaces[35] = new BoardSpace("Short Line", 200); boardSpaces[36] = new BoardSpace("Chance", 0); boardSpaces[37] = new BoardSpace("Park Place", 350); boardSpaces[38] = new BoardSpace("Luxury Tax", 0); boardSpaces[39] = new BoardSpace("Boardwalk", 400); }
//Calculate how much a player owes the owner of a property by the index (space) they land on and the roll that got them there (for utilities) static int getRent(int index, int roll) { BoardSpace current = boardSpaces[index]; int rent = 0; //If space landed on is a railroad if (index == 5 || index == 15 || index == 25 || index == 35) { rent = railsFee(index); } //If space landed on is utility else if (index == 12 || index == 28) { if (hasMonopoly(index)) { rent = 10 * roll; } else { rent = 4 * roll; } } //If space landed on is standard property else { if (hasMonopoly(index) && !current.hasHouses()) { rent = 2 * current.getRent(); } else { rent = current.getRent(); } } return(rent); }
static void playerRoll(Player currentPlayer) { bool rolledDouble = true; int doubleCount = 0; //turn while (rolledDouble) { //Rolls int die1 = roll(); int die2 = roll(); int total = die1 + die2; if (die1 != die2) { rolledDouble = false; } else { doubleCount++; //Go to jail on third double in a row if (doubleCount == 3) { currentPlayer.setCurrentSpace(10); currentPlayer.setJailStatus(true); break; } } //Move Player int spacesMoved = 0; while (spacesMoved < total) { spacesMoved++;//Move forward one space //Reset from 40 to 0 (player gets to 'GO') if (currentPlayer.getSpace() == 40) { currentPlayer.setCurrentSpace(0); currentPlayer.setMoney(currentPlayer.getMoney() + 200); } } //Player lands on space BoardSpace space = boardSpaces[currentPlayer.getSpace()]; //Space is a property if (space.getCost() > 0) { //If space is unowned if (space.getOwner() == null) { if (space.getCost() > currentPlayer.getMoney()) { //Player does not have enough money to buy the property //TODO - Player mortgages, sells houses to afford property (unlikely - but possible) continue; } else { //TODO - Method to Prompt Player to Buy y/n + add player to property owner + remove cash from player } } //If space is owned (not by current player) else if (space.getOwner() != currentPlayer) { int rent = getRent(space.getSpaceNumber(), total); //Pay owner if enough money is owned by current player if ((currentPlayer.getMoney() - rent) >= 0) { currentPlayer.setMoney(currentPlayer.getMoney() - rent); space.getOwner().setMoney(space.getOwner().getMoney() + rent); } else { //TODO - Player mortgages, sells houses, or forfeit all to owner } } } //Space is Chance, Community Chest, Tax Spot, or Corner else { //Chance if (space.getSpaceNumber() == 7 || space.getSpaceNumber() == 22 || space.getSpaceNumber() == 36) { //TODO - Modifier check on chance cards } //Community Chest else if (space.getSpaceNumber() == 2 || space.getSpaceNumber() == 17 || space.getSpaceNumber() == 33) { //TODO - modifier check on community chest cards } //Income Tax else if (space.getSpaceNumber() == 4) { //10% or 200 int percent = System.Convert.ToInt32(currentPlayer.getMoney() * 0.1); int tax = 200; if (percent < 200) { tax = percent; } currentPlayer.setMoney(currentPlayer.getMoney() - tax); } //Luxury Tax else if (space.getSpaceNumber() == 38) { currentPlayer.setMoney(currentPlayer.getMoney() - 75); } //Else if Go To Jail else if (space.getSpaceNumber() == 30) { currentPlayer.setCurrentSpace(10); currentPlayer.setJailStatus(true); break; } } } }
//Check ownership status of each property required for monopoly by index static bool hasMonopoly(int index) { BoardSpace current = boardSpaces[index]; //Brown Properties if (current.getSpaceNumber() == 1 || current.getSpaceNumber() == 3) { if (boardSpaces[1].getOwner() == boardSpaces[3].getOwner()) { return(true); } return(false); } //Light Blue Properties else if (current.getSpaceNumber() == 6 || current.getSpaceNumber() == 8 || current.getSpaceNumber() == 9) { if (boardSpaces[6].getOwner() == boardSpaces[8].getOwner() && boardSpaces[8].getOwner() == boardSpaces[9].getOwner()) { return(true); } return(false); } //Purple Properties else if (current.getSpaceNumber() == 11 || current.getSpaceNumber() == 13 || current.getSpaceNumber() == 14) { if (boardSpaces[11].getOwner() == boardSpaces[13].getOwner() && boardSpaces[13].getOwner() == boardSpaces[14].getOwner()) { return(true); } return(false); } //Utilities else if (current.getSpaceNumber() == 12 || current.getSpaceNumber() == 28) { if (boardSpaces[12].getOwner() == boardSpaces[28].getOwner()) { return(true); } return(false); } //Orange Properties else if (current.getSpaceNumber() == 16 || current.getSpaceNumber() == 18 || current.getSpaceNumber() == 19) { if (boardSpaces[16].getOwner() == boardSpaces[18].getOwner() && boardSpaces[18].getOwner() == boardSpaces[19].getOwner()) { return(true); } return(false); } //Red Properties else if (current.getSpaceNumber() == 21 || current.getSpaceNumber() == 23 || current.getSpaceNumber() == 24) { if (boardSpaces[21].getOwner() == boardSpaces[23].getOwner() && boardSpaces[23].getOwner() == boardSpaces[24].getOwner()) { return(true); } return(false); } //Yellow Properties else if (current.getSpaceNumber() == 26 || current.getSpaceNumber() == 27 || current.getSpaceNumber() == 29) { if (boardSpaces[26].getOwner() == boardSpaces[27].getOwner() && boardSpaces[27].getOwner() == boardSpaces[29].getOwner()) { return(true); } return(false); } //Green Properties else if (current.getSpaceNumber() == 31 || current.getSpaceNumber() == 32 || current.getSpaceNumber() == 34) { if (boardSpaces[31].getOwner() == boardSpaces[32].getOwner() && boardSpaces[32].getOwner() == boardSpaces[34].getOwner()) { return(true); } return(false); } //Dark Blue Properties else if (current.getSpaceNumber() == 37 || current.getSpaceNumber() == 39) { if (boardSpaces[37].getOwner() == boardSpaces[39].getOwner()) { return(true); } return(false); } return(false); }