コード例 #1
0
        public void LosersDontCollect()
        {
            banker.Pay(loser, banker.Money[loser] + 1);
            var playerMoney = banker.Money[player];

            payCard.Execute(player);

            Assert.IsTrue(banker.IsBankrupt(loser));
            Assert.AreEqual(playerMoney - 400, banker.Money[player]);
        }
コード例 #2
0
        public void TakeTurn(IPlayer player)
        {
            doublesCount = 0;

            realEstateHandler.HandleMortgages(player);

            do
            {
                RollAndMove(player);
            }while (CanGoAgain(player));

            if (!banker.IsBankrupt(player))
            {
                realEstateHandler.HandleMortgages(player);
            }
        }
コード例 #3
0
 public void Execute(IPlayer player)
 {
     foreach (var payer in players.Where(p => !banker.IsBankrupt(p)))
     {
         banker.Transact(payer, player, 50);
     }
 }
コード例 #4
0
        private void CheckForBankrupcies()
        {
            var reposessions = ownedSpaces.Keys.Where(o => Owned(o) && banker.IsBankrupt(ownedSpaces[o])).ToList();

            foreach (var repo in reposessions)
            {
                ownedSpaces[repo] = NO_OWNER;
            }
        }
コード例 #5
0
        public void BankruptPlayerDoesNotOwnSpaces()
        {
            BuyProperty();

            banker.Pay(player, banker.Money[player] + 1);
            var renterMoney = banker.Money[renter];

            ownableHandler.Land(renter, 0);

            Assert.IsTrue(banker.IsBankrupt(player));
            Assert.AreEqual(renterMoney - property.Price, banker.Money[renter]);
        }
コード例 #6
0
        public void OnePlayerLosesInThreePlayerGame_OtherTwoKeepPlaying()
        {
            SetupGameWithPlayers(3);
            var loser = game.CurrentPlayer;

            banker.Pay(loser, banker.Money[loser] + 1);
            game.TakeTurn();

            Assert.IsTrue(banker.IsBankrupt(loser));
            Assert.IsFalse(game.Finished);
            Assert.AreEqual(2, game.NumberOfActivePlayers);
        }
コード例 #7
0
        public void Execute(IPlayer player)
        {
            var ineligiblePlayers = banker.GetBankrupcies(players);

            players = players.Except(ineligiblePlayers);

            var count = 0;

            while (count < players.Count() && !banker.IsBankrupt(player))
            {
                banker.Transact(player, players.ElementAt(count++), 50);
            }
        }
コード例 #8
0
        public void GoesBrokeBailingOutOfJail_DoesNotGo()
        {
            player.JailStrategy = new NeverPay();
            banker.Pay(player, banker.Money[player] - 1);
            jailHandler.Imprison(player);

            for (var i = 0; i < 3; i++)
            {
                turnHandler.TakeTurn(player);
            }

            Assert.IsTrue(banker.IsBankrupt(player));
            Assert.AreEqual(BoardConstants.JAIL_OR_JUST_VISITING, boardHandler.PositionOf[player]);
        }
コード例 #9
0
ファイル: Game.cs プロジェクト: cidthecoatrack/Monopoly-Kata
        private void ShiftToNextPlayer()
        {
            var newPointer = currentPlayerPointer;

            do
            {
                newPointer = newPointer.Next ?? players.First;

                if (newPointer == players.First)
                {
                    Round++;
                }
            } while (banker.IsBankrupt(newPointer.Value));

            currentPlayerPointer = newPointer;
            RemoveBankruptPlayers();
        }
コード例 #10
0
 public void Constructor()
 {
     Assert.AreEqual(1500, banker.Money[player]);
     Assert.IsFalse(banker.IsBankrupt(player));
 }
コード例 #11
0
 public void BankruptWhilePaying()
 {
     banker.Pay(player, banker.Money[player] - 1);
     railroadCard.Execute(player);
     Assert.IsTrue(banker.IsBankrupt(player));
 }