예제 #1
0
        public void TestBuyInAuction()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);

            field1.BuyInAuction(game.Players[0], 20);
            Assert.That(game.Players[0].OwnerShip[0].Name, Is.EqualTo(FieldNames.OldKentRoad));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 20));
        }
예제 #2
0
        private static void DisplayStreetFieldData(Game game, int pos)
        {
            StreetField streetField = (StreetField)game.Fields[pos];

            Console.Write(streetField.Name + ", Mortage: " + streetField.IsMortage + ", Level: " + streetField.Level + ", RentToPay: " + streetField.RentToPay);
            if (streetField.Owner != null)
            {
                Console.Write(", Owner: " + streetField.Owner.Name);
            }
        }
예제 #3
0
        public void TestExChangeSupplierFieldwithField()
        {
            Game          game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField   field1 = ((StreetField)game.Fields[1]);
            SupplierField field7 = ((SupplierField)game.Fields[7]);

            field1.Buy(game.Players[0]);
            field7.Buy(game.Players[1]);
            field7.ExchangeField(field7.Owner, game.Players[0], field1);
            Assert.That(field1.Owner.Name, Is.EqualTo(game.Players[1].Name));
            Assert.That(field7.Owner.Name, Is.EqualTo(game.Players[0].Name));
        }
예제 #4
0
        public void TestRemovePlayer()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);

            field1.Buy(game.Players[0]);
            game.RemovePlayer(game.Players[0]);
            Assert.That(game.Players.Count(), Is.EqualTo(1));
            Assert.That(game.PlayerPos.Count(), Is.EqualTo(1));
            Assert.That(game.CurrentPlayer.Removed, Is.EqualTo(true));
            Assert.That(game.AuctionFields[0].Name, Is.EqualTo(FieldNames.OldKentRoad));
        }
예제 #5
0
        public void TestExChangeTrainStationFieldwithField()
        {
            Game              game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField       field1 = ((StreetField)game.Fields[1]);
            TrainstationField field5 = ((TrainstationField)game.Fields[5]);

            field1.Buy(game.Players[0]);
            field5.Buy(game.Players[1]);
            field5.ExchangeField(field5.Owner, game.Players[0], field1);
            Assert.That(field1.Owner.Name, Is.EqualTo(game.Players[1].Name));
            Assert.That(field5.Owner.Name, Is.EqualTo(game.Players[0].Name));
        }
 private void SellHouseButton(object sender, RoutedEventArgs e)
 {
     try
     {
         StreetField field = (StreetField)selectedField;
         field.SellHouse(_game.CurrentPlayer, int.Parse(inputField.Text));
         _monopolyField.Update();
     }
     catch
     {
         MessageBox.Show("You cant sell houses on that field");
     }
 }
예제 #7
0
        public void TestExChangeFieldMoney()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);

            field1.Buy(game.Players[0]);
            field1.ExchangeField(game.Players[0], game.Players[1], 60);
            Assert.That(game.Players[0].OwnerShip.Count(), Is.EqualTo(0));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500));

            Assert.That(game.Players[1].OwnerShip[0].Name, Is.EqualTo(FieldNames.OldKentRoad));
            Assert.That(game.Players[1].Money, Is.EqualTo(1440));
            Assert.That(field1.Owner.Name, Is.EqualTo(game.Players[1].Name));
        }
예제 #8
0
        public void TestBuyCurrentField()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];

            game.SetPlayerPos(game.Players[0], 1);
            game.BuyCurrentStreet(game.Players[0]);

            Assert.That(game.Players[0].OwnerShip[0].Name, Is.EqualTo(FieldNames.OldKentRoad));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 60));

            game.SetPlayerPos(game.Players[1], 1);
            Assert.That(() => game.BuyCurrentStreet(game.Players[1]), Throws.InvalidOperationException);
        }
예제 #9
0
        public void TestPayRent()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);

            game.SetPlayerPos(game.Players[1], pos: 1);
            Assert.That(game.Players[1].Money, Is.EqualTo(1500 - 250));
            Assert.That(field3.RentToPay, Is.EqualTo(0));
        }
예제 #10
0
        public void TestSellHouse()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(((StreetField)game.Fields[1]).Level, Is.EqualTo(5));
            field1.SellHouse(game.Players[0], 5);
            Assert.That(field1.Level, Is.EqualTo(0));
            Assert.That(() => field1.SellHouse(game.Players[1], 1), Throws.InvalidOperationException);
            Assert.That(() => field1.SellHouse(game.Players[0], 1), Throws.InvalidOperationException);
        }
예제 #11
0
        public void TestPayOffMortage()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);

            field1.Buy(game.Players[0]);
            field1.TakeMortage(game.Players[0]);
            Assert.That(field1.IsMortage, Is.EqualTo(true));
            field1.PayOffMortage(game.Players[0]);
            Assert.That(field1.IsMortage, Is.EqualTo(false));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 60 + 30 - 33));
            Assert.That(() => field1.PayOffMortage(game.Players[1]), Throws.InvalidOperationException);
            field2.Buy(game.Players[0]);
            Assert.That(() => field2.PayOffMortage(game.Players[0]), Throws.InvalidOperationException);
        }
예제 #12
0
        private static void SellHouse(Game game)
        {
            for (int s = 0; s < game.CurrentPlayer.OwnerShip.Count(); s++)
            {
                StreetField street = (StreetField)game.CurrentPlayer.OwnerShip[s];
                Console.WriteLine(s + ". " + street.Name + "Level " + street.Level + ", Costs: " + street.Cost.House);
            }
            Console.Write("StreetNum: ");
            int         streetNum   = int.Parse(Console.ReadLine());
            StreetField streetHouse = (StreetField)game.CurrentPlayer.OwnerShip[streetNum];

            Console.Write("Amount of Houses to Sell (1-5):");
            int amount = int.Parse(Console.ReadLine());

            streetHouse.SellHouse(game.CurrentPlayer, amount);
        }
예제 #13
0
        private static void LevelUp(Game game)
        {
            for (int s = 0; s < game.CurrentPlayer.OwnerShip.Count(); s++)
            {
                StreetField street = (StreetField)game.CurrentPlayer.OwnerShip[s];
                Console.WriteLine(s + ". " + street.Name + "Level " + street.Level + ", Costs: " + street.Cost.House);
            }
            Console.Write("StreetNum: ");
            int         streetNum      = int.Parse(Console.ReadLine());
            StreetField streetToUpdate = (StreetField)game.CurrentPlayer.OwnerShip[streetNum];

            Console.Write("Level: ");
            int level = int.Parse(Console.ReadLine());

            streetToUpdate.LevelUp(game.CurrentPlayer, level);
        }
예제 #14
0
        public void TestAuctionField()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);

            game.StartAuction(new List <IRentableField> {
                field1
            });
            game.AuctionField(field1, new Dictionary <Player, int>
            {
                { game.Players[0], 100 },
                { game.Players[1], 200 }
            });
            game.FinishAuction();
            Assert.That(game.Players[1].OwnerShip[0].Name, Is.EqualTo(FieldNames.OldKentRoad));
            Assert.That(game.Players[1].Money, Is.EqualTo(1500 - 200));
        }
예제 #15
0
        public void TestUpdateLevel()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);
            Assert.That(() => field1.LevelUp(game.Players[0], 5), Throws.InvalidOperationException);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(field1.Level, Is.EqualTo(5));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 2 * 60 - 5 * 50));
            Assert.That(() => field3.LevelUp(game.Players[0], 5), Throws.InvalidOperationException);
            Assert.That(() => field1.LevelUp(game.Players[1], 5), Throws.ArgumentException);
            Assert.That(() => field1.LevelUp(game.Players[0], 7), Throws.ArgumentException);
        }
예제 #16
0
        public void PlayerDoesNotHaveEnoughMoney()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);
            StreetField field3 = ((StreetField)game.Fields[3]);
            StreetField field4 = ((StreetField)game.Fields[4]);

            game.Players[0].GetMoney(20000);
            game.Players[1].GetMoney(20000);

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[1]);

            game.Players[1].PayMoney(game.Players[1].Money);
            Assert.That(() => game.Fields[1].OnEnter(game.Players[1]), Throws.TypeOf(typeof(NotEnoughMoneyException)));
        }
예제 #17
0
        public void TestStreetRepairCard()
        {
            Game        game   = new Game(new Player[] { new Player("X"), new Player("Y"), new Player("Z") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);

            field1.LevelUp(game.Players[0], 5);
            field2.LevelUp(game.Players[0], 4);

            StreetRepairCard card = new StreetRepairCard("", 50, 100, game);

            card.UseCard(game.Players[0]);
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 2 * 60 - 9 * 50 - 4 * 50 - 1 * 100));
        }
예제 #18
0
        public void TestGameOver()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);

            field1.Buy(game.Players[0]);
            game.Players[1].PayMoney(game.Players[1].Money);
            try
            {
                field1.OnEnter(game.Players[1]);
            }
            catch (BankruptException)
            {
                game.RemovePlayer(game.Players[1]);
                Assert.That(game.CurrentPlayer.Removed, Is.EqualTo(true));
            }
            Assert.That(game.IsGameOver, Is.EqualTo(true));
        }
예제 #19
0
        public void TestTakeMortage()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = (StreetField)game.Fields[1];
            StreetField field2 = (StreetField)game.Fields[2];
            StreetField field3 = (StreetField)game.Fields[3];

            field1.Buy(game.Players[0]);

            field1.TakeMortage(game.Players[0]);
            Assert.That(field1.IsMortage, Is.EqualTo(true));
            Assert.That(game.Players[0].Money, Is.EqualTo(1500 - 60 + 30));

            game.SetPlayerPos(game.Players[1], 1);
            Assert.That(game.Players[1].Money, Is.EqualTo(1500));

            Assert.That(() => field3.TakeMortage(game.Players[1]), Throws.InvalidOperationException);
            Assert.That(() => field1.TakeMortage(game.Players[0]), Throws.InvalidOperationException);
            Assert.That(() => field1.TakeMortage(game.Players[1]), Throws.InvalidOperationException);
            field2.Buy(game.Players[0]);
            field1.LevelUp(game.Players[0], 5);
            Assert.That(() => field1.TakeMortage(game.Players[0]), Throws.InvalidOperationException);
        }
예제 #20
0
        private static void Mortage(Game game)
        {
            for (int s = 0; s < game.CurrentPlayer.OwnerShip.Count(); s++)
            {
                StreetField street = (StreetField)game.CurrentPlayer.OwnerShip[s];
                Console.WriteLine(s + ". " + street.Name + "Level " + street.Level + ", Costs: " + street.Cost.House);
            }
            Console.Write("StreetNum: ");
            int         streetNum     = int.Parse(Console.ReadLine());
            StreetField streetMortage = (StreetField)game.CurrentPlayer.OwnerShip[streetNum];

            Console.Write("TakeMortage(t) PayOffMortage(p): ");
            string input = Console.ReadLine();

            if (input == "t")
            {
                streetMortage.TakeMortage(game.CurrentPlayer);
            }
            else if (input == "p")
            {
                streetMortage.PayOffMortage(game.CurrentPlayer);
            }
        }
예제 #21
0
        public void PlayerIsBankrupt()
        {
            Game        game   = new Game(new Player[] { new Player("XXX"), new Player("YYY") });
            StreetField field1 = ((StreetField)game.Fields[1]);
            StreetField field2 = ((StreetField)game.Fields[2]);
            StreetField field3 = ((StreetField)game.Fields[3]);
            StreetField field4 = ((StreetField)game.Fields[4]);

            game.Players[0].GetMoney(20000);
            game.Players[1].PayMoney(1500);

            field1.Buy(game.Players[0]);
            field2.Buy(game.Players[0]);
            field3.Buy(game.Players[0]);
            field4.Buy(game.Players[0]);

            field1.LevelUp(game.Players[0], 5);
            field2.LevelUp(game.Players[0], 5);
            field3.LevelUp(game.Players[0], 5);
            field4.LevelUp(game.Players[0], 5);

            Assert.That(() => game.Fields[4].OnEnter(game.Players[1]), Throws.TypeOf(typeof(BankruptException)));
        }