public static void PerformSpaceActions(int fiPlayerNumber, int fiPosition) { if (Property[fiPosition].ColorNum == -1) { // If property is non-purchasable switch (Property[fiPosition].Name) { case "Go": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON GO!"; Board.GameLog = " COLLECT $200"; Player[fiPlayerNumber].Cash += 200; break; case "Community Chest": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON COMMUNITY CHEST! DRAW CARD:"; string fsCommunityChestCard; fsCommunityChestCard = CommunityChestDeck.DrawCard(); Board.GameLog = " " + fsCommunityChestCard; ExecuteCardDesc("Community Chest", fsCommunityChestCard, fiPlayerNumber); break; case "Income Tax": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON INCOME TAX!"; Player[fiPlayerNumber].Cash -= 200; if (Config.FreeParking == true) { Board.GameLog = " PAY $200 TO FREE PARKING"; FreeParkingCash += 200; } else { Board.GameLog = " PAY $200"; } break; case "Chance": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON CHANCE! DRAW CARD:"; string fsChanceCard; fsChanceCard = ChanceDeck.DrawCard(); Board.GameLog = " " + fsChanceCard; ExecuteCardDesc("Chance", fsChanceCard, fiPlayerNumber); break; case "Just Visiting": break; case "Free Parking": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON FREE PARKING!"; if (Config.FreeParking == true) { Board.GameLog = " COLLECT " + FreeParkingCash.ToString("C0"); Player[fiPlayerNumber].Cash += FreeParkingCash; if (Config.FreeParking500 == true) { FreeParkingCash = 500; Board.GameLog = " FREE PARKING RESET TO $500"; } else { FreeParkingCash = 0; Board.GameLog = " FREE PARKING RESET TO $0"; } } break; case "Luxury Tax": Board.GameLog = " Player" + fiPlayerNumber.ToString() + " LANDS ON LUXURY TAX!"; Player[fiPlayerNumber].Cash -= 75; if (Config.FreeParking == true) { Board.GameLog = " PAY $75 TO FREE PARKING"; FreeParkingCash += 75; } else { Board.GameLog = " PAY $75"; } break; } } else { // If property is a purchasable type if (Property[fiPosition].Owner == -1) { // If Property is Unowned StrategyClass Strategy = new StrategyClass(Player[fiPlayerNumber]); if (Strategy.BuyProperty(fiPosition) == true) { PlayerBuysProperty(fiPlayerNumber, fiPosition); } } else { if (Property[fiPosition].Owner != fiPlayerNumber) { // If landed on someone else's property PlayerPaysRent(fiPlayerNumber, fiPosition); } } } }
public static void NextTurn() { KickBrokePlayers(); Board.GameLog = " Player" + PlayerTurn.ToString() + " STATUS: CASH=" + Player[PlayerTurn].Cash.ToString("C0") + " ASSETS=" + Player[PlayerTurn].Assets.ToString("C0"); StrategyClass Strategy = new StrategyClass(Player[PlayerTurn]); Strategy.BuyPropertyCutOffPct = 25; // Evaluate if any preturn trades should be run. Strategy.RunPreturnOptions(); Random Random = new Random(RandomSeed); //int ciDice1, ciDice2, ciTotal; ciDice1 = Random.Next(1, 7); ciDice2 = Random.Next(1, 7); ciTotal = ciDice1 + ciDice2; // // PLAYER IN JAIL // if (Player[PlayerTurn].CurrentPosition == 30) { // If Player is in Jail if (Player[PlayerTurn].TurnInJail < 3) { // If player is not ready to get out if (ciDice1 == ciDice2) { Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!"; Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")"; Player[PlayerTurn].TurnInJail = 0; Player[PlayerTurn].CurrentPosition = 10; Property[30].PlayerOffSpace(PlayerTurn); DoublesCount = 0; MovePlayerAhead(PlayerTurn, ciTotal); } else { // Player fails at rolling doubles and stays for another turn. Board.GameLog = "Player" + PlayerTurn.ToString() + " FAILED TO ROLL DOUBLES (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!"; Player[PlayerTurn].TurnInJail++; } } else if (Player[PlayerTurn].TurnInJail == 3) { // If player is ready to get out this turn if (ciDice1 == ciDice2) { // Player rolls doubles to get out of jail Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!"; DoublesCount = 0; } else { // Player fails at rolling doubles and pays $50 Board.GameLog = " Player" + PlayerTurn.ToString() + " FAILED TO ROLL DOUBLES AND GOT OUT OF JAIL (TRY " + Player[PlayerTurn].TurnInJail.ToString() + ")!"; Player[PlayerTurn].Cash -= 50; if (Config.FreeParking == true) { Board.GameLog = " PAY $50 TO FREE PARKING"; FreeParkingCash += 50; } else { Board.GameLog = " PAY $50"; } } Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")"; Player[PlayerTurn].TurnInJail = 0; Player[PlayerTurn].CurrentPosition = 10; Property[30].PlayerOffSpace(PlayerTurn); MovePlayerAhead(PlayerTurn, ciTotal); } if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; } // Set Next Player's Turn // // PLAYER NOT IN JAIL // } else { // If Player is not in Jail if (ciDice1 == ciDice2) { // If Player rolled doubles if (DoublesCount < 2) { // If first or second time rolling doubles DoublesCount++; // Increase Doubles Counter Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (DOUBLE " + ciDice1.ToString() + "s, ROLL " + DoublesCount.ToString() + ")"; MovePlayerAhead(PlayerTurn, ciTotal); // Move Player Ahead } else if (DoublesCount == 2) { // If third time rolling doubles DoublesCount++; Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (DOUBLE " + ciDice1.ToString() + "s, ROLL " + DoublesCount.ToString() + ") GO TO JAIL"; DoublesCount = 0; // Reset DoubleCounter to 0 MovePlayerToJail(PlayerTurn); // Send Player to Jail if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; } // Set Next Player's Turn } } else { // If Player did not roll doubles Board.GameLog = " Player" + PlayerTurn.ToString() + " ROLLED " + ciTotal.ToString() + " (" + ciDice1.ToString() + "+" + ciDice2.ToString() + ")"; DoublesCount = 0; // Reset Doubles count to 0 MovePlayerAhead(PlayerTurn, ciTotal); // Move Player Ahead if (PlayerTurn == 3) { PlayerTurn = 0; } else { PlayerTurn++; } // Set Next Player's Turn } } RandomSeed = Random.Next(1, int.MaxValue); Board.GameLog = "Player" + PlayerTurn.ToString() + "'s Turn:"; }