コード例 #1
1
ファイル: Attack.cs プロジェクト: ServerGame/NullQuest
        public void Execute(IDice dice, Combatant attacker, Combatant defender, IList<CombatLogEntry> combatLog)
        {
            int attack = attacker.ToHitAttack;
            int defend = defender.ToHitDefense;

            var toHitThreshold = ((attack + ((attacker.Level - defender.Level) / 2)) / ((double)attack + defend)).ConstrainWithinBounds(0.20, 0.80);
            Debug.WriteLine("{0} has a {1:P0} chance to hit {2}", attacker.Name, toHitThreshold, defender.Name);

            if (dice.Random() < toHitThreshold)
            {
                var damage = Math.Max(1, attacker.GetAttackDamage(dice));
                defender.LowerHealth(damage);
                combatLog.Add(new CombatLogEntryFromAction<Attack>(Name)
                {
                    Text = string.Format("{0} hits {1} with {2} for {3} points!", attacker.Name, defender.Name, Name, damage),
                    Attacker = attacker,
                    CombatEffect = new CombatOutcome() { Damage = damage }
                });
            }
            else
            {
                combatLog.Add(
                    new CombatLogEntry
                    {
                        Text = string.Format("{0} attempts to hit {1} with {2} and fails miserably!", attacker.Name, defender.Name, Name),
                        Attacker = attacker
                    });
            }
        }
コード例 #2
0
        public void WhenTokenMovesToSquare100_ThenPlayerWinsGame(GameEngine gameEngine, Player player,
                                                                 IDice dice, int diceRollResult, int positionBeforeMove)
        {
            "Given the token is on square 97"
            .x(() =>
            {
                player           = new Player(1, "Player 1", dice);
                int totalSquares = 100;
                gameEngine       = new GameEngine(totalSquares);
                gameEngine.AddPlayer(player);
                gameEngine.Start();
                gameEngine.MovePlayer(player, 96);
            });

            "When the token is moved 3 spaces"
            .x(() =>
            {
                gameEngine.MovePlayer(player, 3);
            });

            "Then the token is on square 100"
            .x(() =>
            {
                gameEngine.CurrentSquareForPlayer(player).Should().Be(100);
            });

            "And the player has won the game"
            .x(() =>
            {
                gameEngine.Winner.Should().Be(player);
            });
        }
コード例 #3
0
 public Game(List <Player> players, List <RealState> properties, IDice dice = null)
 {
     this.dice       = dice;
     this.properties = properties;
     this.players    = players;
     this.Board      = new Board(players, properties);
 }
コード例 #4
0
 public Utility(Int32 index, String name, Int32 cost, Int32 rent, IBanker banker,
                IEnumerable <Utility> utilities, IDice dice)
     : base(index, name, cost, rent, banker)
 {
     this.utilities = utilities;
     this.dice      = dice;
 }
コード例 #5
0
 public DungeonController(GameWorld gameWorld, IDice dice, IWeaponFactory weaponFactory, IAsciiArtRepository asciiArtRepository)
 {
     _gameWorld = gameWorld;
     _dice = dice;
     _weaponFactory = weaponFactory;
     _asciiArtRepository = asciiArtRepository;
 }
コード例 #6
0
        private void RollStats()
        {
            // Create Instance of Dice Interface.
            _dice = new Adventurer(_username);
            Console.WriteLine("Let's roll your stats.");
            _adventurer.CharStats = new Dictionary <string, int>();
            // Roll Each Stat, Add to Dictionary.
            int strength = _dice.StatRoll();

            _adventurer.CharStats.Add("Strength", strength);
            int dexterity = _dice.StatRoll();

            _adventurer.CharStats.Add("Dexterity", dexterity);
            int constitution = _dice.StatRoll();

            _adventurer.CharStats.Add("Constitution", constitution);
            int wisdom = _dice.StatRoll();

            _adventurer.CharStats.Add("Wisdom", wisdom);
            int intelligence = _dice.StatRoll();

            _adventurer.CharStats.Add("Intelligence", intelligence);
            int charisma = _dice.StatRoll();

            _adventurer.CharStats.Add("Charisma", charisma);
        }
コード例 #7
0
        public void WhenFightCalledAndDefenseFighterDoesNotDoCounterDamage_ThenNoDamageDoneToOffenseFighter()
        {
            // Arrange
            int villianHealth = 2;

            // Immortal, strong hero
            var mockHero = new Mock <ISuperPerson>();

            mockHero.Setup(x => x.Name).Returns("Hero");
            mockHero.Setup(x => x.Health).Returns(1000);
            mockHero.Setup(x => x.Strength).Returns(52);
            mockHero.Setup(x => x.Speed).Returns(100);
            mockHero.Setup(x => x.Resistance).Returns(100);
            mockHero.Setup(x => x.Intellect).Returns(100);
            mockHero.Setup(x => x.IsAlive).Returns(true);

            // Weak villian, dies on 2nd hit
            var mockVillian = new Mock <ISuperPerson>();

            mockVillian.Setup(x => x.Name).Returns("Villian");
            mockVillian.Setup(x => x.Health).Returns(() => villianHealth);
            mockVillian.Setup(x => x.Strength).Returns(0);
            mockVillian.Setup(x => x.Speed).Returns(0);
            mockVillian.Setup(x => x.Resistance).Returns(0);
            mockVillian.Setup(x => x.Intellect).Returns(0);
            mockVillian.Setup(x => x.IsAlive).Returns(() => villianHealth > 0);
            mockVillian.Setup(x => x.Damage(It.IsAny <int>())).Callback(() =>
            {
                villianHealth -= 1;
            });

            var mockDice = new Mock <IDice>();

            // Ensure hero gets first hit
            mockDice.Setup(x => x.NumberOfSides).Returns(100);
            mockDice.SetupSequence(x => x.Roll())
            .Returns(1)   //coin toss (false)
            .Returns(1)   //hero gets a hit
            .Returns(1)   //villian failed to block
            .Returns(1)   //villian fails to counter-damage
            .Returns(1)   //villain misses
            .Returns(1)   //hero gets a hit
            .Returns(1);  //villian failed to block

            IDice dice = mockDice.Object;
            SlugFestFightStrategy target = new SlugFestFightStrategy(dice);

            ISuperPerson hero    = mockHero.Object;
            ISuperPerson villian = mockVillian.Object;

            // Act
            target.StartFight(hero, villian);
            WaitForFightCompleted(target);

            // Note: Moq example of using Verify with Times.Exactly to count invocations

            // Assert
            mockHero.Verify(x => x.Damage(It.IsAny <int>()), Times.Never());
            mockVillian.Verify(x => x.Damage(It.IsAny <int>()), Times.Exactly(2));
        }
コード例 #8
0
ファイル: ListHelper.cs プロジェクト: nf2g/Zilon_Roguelike
        public static T RollRandom <T>(List <T> list, IDice dice, Predicate <T> predicate) where T : class
        {
            if (list is null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (dice is null)
            {
                throw new ArgumentNullException(nameof(dice));
            }

            if (predicate is null)
            {
                throw new ArgumentNullException(nameof(predicate));
            }

            var count        = list.Count;
            var currentIndex = dice.Roll(0, count - 1);

            var foundIndex = list.FindIndex(currentIndex, predicate);

            if (foundIndex > -1)
            {
                return(list[foundIndex]);
            }

            if (foundIndex >= 0)
            {
                foundIndex = list.FindIndex(0, currentIndex, predicate);
                return(list[foundIndex]);
            }

            return(null);
        }
コード例 #9
0
        public static Dictionary <Int32, OwnableSpace> CreateRealEstate(IDice dice)
        {
            var realEstate = new Dictionary <Int32, OwnableSpace>();

            realEstate.Add(BoardConstants.MEDITERANEAN_AVENUE, new Property("Mediteranean Avenue", 60, 2, GROUPING.PURPLE, 50, new[] { 10, 30, 90, 160, 250 }));
            realEstate.Add(BoardConstants.BALTIC_AVENUE, new Property("Baltic Avenue", 60, 4, GROUPING.PURPLE, 50, new[] { 20, 60, 180, 320, 450 }));
            realEstate.Add(BoardConstants.ORIENTAL_AVENUE, new Property("Oriental Avenue", 100, 6, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.VERMONT_AVENUE, new Property("Vermont Avenue", 100, 6, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.CONNECTICUT_AVENUE, new Property("Connecticut Avenue", 120, 8, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.ST_CHARLES_PLACE, new Property("St. Charles Place", 140, 10, GROUPING.PINK, 100, new[] { 50, 150, 450, 625, 750 }));
            realEstate.Add(BoardConstants.STATES_AVENUE, new Property("States Avenue", 140, 10, GROUPING.PINK, 100, new[] { 50, 150, 450, 625, 750 }));
            realEstate.Add(BoardConstants.VIRGINIA_AVENUE, new Property("Virginia Avenue", 160, 12, GROUPING.PINK, 100, new[] { 60, 180, 500, 700, 900 }));
            realEstate.Add(BoardConstants.ST_JAMES_PLACE, new Property("St. James Place", 180, 14, GROUPING.ORANGE, 100, new[] { 70, 200, 550, 750, 950 }));
            realEstate.Add(BoardConstants.TENNESSEE_AVENUE, new Property("Tennessee Avenue", 180, 14, GROUPING.ORANGE, 100, new[] { 70, 200, 550, 750, 950 }));
            realEstate.Add(BoardConstants.NEW_YORK_AVENUE, new Property("New York Avenue", 200, 16, GROUPING.ORANGE, 100, new[] { 80, 220, 600, 800, 1000 }));
            realEstate.Add(BoardConstants.KENTUCKY_AVENUE, new Property("Kentucky Avenue", 220, 18, GROUPING.RED, 150, new[] { 90, 250, 700, 875, 1050 }));
            realEstate.Add(BoardConstants.INDIANA_AVENUE, new Property("Indiana Avenue", 220, 18, GROUPING.RED, 150, new[] { 90, 250, 700, 875, 1050 }));
            realEstate.Add(BoardConstants.ILLINOIS_AVENUE, new Property("Illinois Avenue", 240, 20, GROUPING.RED, 150, new[] { 100, 300, 750, 925, 1100 }));
            realEstate.Add(BoardConstants.ATLANTIC_AVENUE, new Property("Atlantic Avenue", 260, 22, GROUPING.YELLOW, 150, new[] { 110, 330, 800, 975, 1150 }));
            realEstate.Add(BoardConstants.VENTNOR_AVENUE, new Property("Ventnor Avenue", 260, 22, GROUPING.YELLOW, 150, new[] { 110, 330, 800, 975, 1150 }));
            realEstate.Add(BoardConstants.MARVIN_GARDENS, new Property("Marvin Gardens", 280, 24, GROUPING.YELLOW, 150, new[] { 120, 360, 850, 1025, 1200 }));
            realEstate.Add(BoardConstants.PACIFIC_AVENUE, new Property("Pacific Avenue", 300, 26, GROUPING.GREEN, 200, new[] { 130, 390, 900, 1100, 1275 }));
            realEstate.Add(BoardConstants.NORTH_CAROLINA_AVENUE, new Property("North Carolina Avenue", 300, 26, GROUPING.GREEN, 200, new[] { 130, 390, 900, 1100, 1275 }));
            realEstate.Add(BoardConstants.PENNSYLVANIA_AVENUE, new Property("Pennsylvania Avenue", 320, 28, GROUPING.GREEN, 200, new[] { 150, 450, 1000, 1200, 1400 }));
            realEstate.Add(BoardConstants.PARK_PLACE, new Property("Park Place", 350, 35, GROUPING.DARK_BLUE, 200, new[] { 175, 500, 1100, 1300, 1500 }));
            realEstate.Add(BoardConstants.BOARDWALK, new Property("Boardwalk", 400, 50, GROUPING.DARK_BLUE, 200, new[] { 200, 600, 1400, 1700, 2000 }));
            realEstate.Add(BoardConstants.SHORT_LINE, new Railroad("Short Line"));
            realEstate.Add(BoardConstants.BandO_RAILROAD, new Railroad("B&O Railroad"));
            realEstate.Add(BoardConstants.PENNSYLVANIA_RAILROAD, new Railroad("Pennsylvania Railroad"));
            realEstate.Add(BoardConstants.READING_RAILROAD, new Railroad("Reading Railroad"));
            realEstate.Add(BoardConstants.WATER_WORKS, new Utility("Water Works", dice));
            realEstate.Add(BoardConstants.ELECTRIC_COMPANY, new Utility("Electric Company", dice));

            return(realEstate);
        }
コード例 #10
0
ファイル: Flee.cs プロジェクト: ServerGame/NullQuest
        public void Execute(IDice dice, Combatant attacker, Combatant defender, IList<CombatLogEntry> combatLog)
        {
            int attackerFleeRating = Math.Max(1, attacker.Level + attacker.Agility.GetStatModifier());
            int defenderFleeRating = Math.Max(1, defender.Level + defender.Agility.GetStatModifier());

            var toFleeThreshold = ((attackerFleeRating) / ((double)attackerFleeRating + defenderFleeRating)).ConstrainWithinBounds(0.20, 0.80);
            Debug.WriteLine("{0} has a {1:P0} chance to flee from {2}", attacker.Name, toFleeThreshold, defender.Name);

            if (dice.Random() < toFleeThreshold)
            {
                attacker.HasFledCombat = true;
                combatLog.Add(new CombatLogEntryFromAction<Flee>(Name)
                {
                    Text = string.Format("{0} has fled the battle!", attacker.Name),
                    Attacker = attacker,
                    CombatEffect = CombatOutcome.Empty
                });
            }
            else
            {
                combatLog.Add(new CombatLogEntryFromAction<Flee>(Name)
                {
                    Text = string.Format("{0} attempts to flee but {1} gets in the way!", attacker.Name, defender.Name),
                    Attacker = attacker,
                    CombatEffect = CombatOutcome.Empty
                });
            }
        }
コード例 #11
0
 public int RollDiceForPlayOrder(IDice dice)
 {
     dice.Roll();
     this.PlayOrderDiceRoll      = dice.Result;
     this.DiceRolledForPlayOrder = true;
     return(this.PlayOrderDiceRoll);
 }
コード例 #12
0
ファイル: Scroll.cs プロジェクト: ServerGame/NullQuest
        public CombatLogEntry Use(IDice dice, Combatant combatant)
        {
            combatant.AddSpellToSpellBook(Spell);
            combatant.RemoveItemFromInventory(this);

            return null;
        }
コード例 #13
0
ファイル: Utility.cs プロジェクト: kevPo/Monopoly
 public Utility(Int32 index, String name, Int32 cost, Int32 rent, IBanker banker,
                IEnumerable<Utility> utilities, IDice dice)
     : base(index, name, cost, rent, banker)
 {
     this.utilities = utilities;
     this.dice = dice;
 }
コード例 #14
0
        public void WhenTokenMoves4StepsFrom97_ThenTokenIsOn97(GameEngine gameEngine, Player player,
                                                               IDice dice, int diceRollResult, int positionBeforeMove)
        {
            "Given the token is on square 97"
            .x(() =>
            {
                player           = new Player(1, "Player 1", dice);
                int totalSquares = 100;
                gameEngine       = new GameEngine(totalSquares);
                gameEngine.AddPlayer(player);
                gameEngine.Start();
                gameEngine.MovePlayer(player, 96);
            });

            "When the token is moved 4 spaces"
            .x(() =>
            {
                gameEngine.MovePlayer(player, 4);
            });

            "Then the token is on square 97"
            .x(() =>
            {
                gameEngine.CurrentSquareForPlayer(player).Should().Be(97);
            });

            "And the player has not won the game"
            .x(() =>
            {
                gameEngine.Winner.Should().Be(null);
            });
        }
コード例 #15
0
ファイル: GameSetup.cs プロジェクト: QuinntyneBrown/DDD-Risk
        public GameSetup(Guid gameSetupId, Guid gameId, IList<Guid> players, IDice dice)
        {
            var startingPlayer = RollDiceUntilWinner(players, dice);
            var numberOfStartingInfantryUnits = GetStartingInfantryUnits(players.Count);

            RaiseEvent(new GameSetupStarted(gameSetupId, gameId, players, startingPlayer, Board.Clear(), numberOfStartingInfantryUnits));
        }
コード例 #16
0
 public Game(IDice die1, IDice die2, IDice die3)
 {
     dice = new List<IDice>();
     dice.Add(die1);
     dice.Add(die2);
     dice.Add(die3);
 }
コード例 #17
0
 public TurnResult Take(int turnOrder, IPlayer player, IBoard board, IDice dice)
 {
     return(new TurnResult()
     {
         TurnOrder = turnOrder, PlayerName = player.Name, StartingLocation = player.Location, EndingLocation = player.Location
     });
 }
コード例 #18
0
        public void Use(Agent agent, Globe globe, IDice dice)
        {
            var highestBranchs = agent.Skills.OrderBy(x => x.Value)
                                 .Where(x => x.Value >= 1);

            var agentNameGenerator = globe.agentNameGenerator;

            if (highestBranchs.Any())
            {
                var firstBranch = highestBranchs.First();

                var agentDisciple = new Agent
                {
                    Name     = agentNameGenerator.Generate(Sex.Male, 1),
                    Location = agent.Location,
                    Realm    = agent.Realm,
                    Hp       = 3
                };

                agentDisciple.Skills.Add(firstBranch.Key, firstBranch.Value / 2);

                globe.Agents.Add(agent);

                CacheHelper.AddAgentToCell(globe.AgentCells, agentDisciple.Location, agent);
            }
            else
            {
                globe.AgentCrisys++;
            }
        }
コード例 #19
0
 public Actor(
     string name,
     int armorClass,
     int currentHitPoints,
     int maxHitPoints,
     int temporaryHitPoints,
     int proficiency,
     int strength,
     int dexterity,
     int constitution,
     int intelligence,
     int wisdom,
     int charisma,
     IDice rollableDice,
     HitPoints.Factory hitPointsFactory,
     Abilities.Factory abilityScoreFactory)
 {
     if (hitPointsFactory == null)
     {
         throw new ArgumentNullException(nameof(hitPointsFactory));
     }
     if (abilityScoreFactory == null)
     {
         throw new ArgumentNullException(nameof(abilityScoreFactory));
     }
     _rollableDice = rollableDice ?? throw new ArgumentNullException(nameof(rollableDice));
     Name          = name ?? throw new ArgumentNullException(nameof(name));
     ArmorClass    = armorClass;
     Proficiency   = proficiency;
     HitPoints     = hitPointsFactory(currentHitPoints, maxHitPoints, temporaryHitPoints);
     AbilityScores = abilityScoreFactory(strength, dexterity, constitution, intelligence, wisdom, charisma);
 }
コード例 #20
0
ファイル: DefaultValuesUnitTest.cs プロジェクト: elavanis/Mud
        public void DefaultValues_DiceForArmorLevel_Level100()
        {
            IDice dice = defaultValue.DiceForArmorLevel(100);

            Assert.AreEqual(5, dice.Die);
            Assert.AreEqual(5011, dice.Sides);
        }
コード例 #21
0
        public void TestInitialize()
        {
            dice   = new Dice();
            banker = new Banker();
            board  = new Board(banker, dice);
            player = new Player("test");
            owner  = new Player("Owner");
            banker.AddAccount(owner, 1500);

            railRoad1 = new RailRoadProperty(5, banker, "railRoad1", 200);
            railRoad2 = new RailRoadProperty(15, banker, "railRoad2", 200);
            railRoad3 = new RailRoadProperty(25, banker, "railRoad3", 200);
            railRoad4 = new RailRoadProperty(35, banker, "railRoad4", 200);
            var groupedSpaces = new List <IOwnableProperty>()
            {
                railRoad1, railRoad2, railRoad3, railRoad4
            };

            railRoad1.GroupedSpaces = groupedSpaces;
            railRoad2.GroupedSpaces = groupedSpaces;
            railRoad3.GroupedSpaces = groupedSpaces;
            railRoad4.GroupedSpaces = groupedSpaces;

            dice.Roll();
        }
コード例 #22
0
ファイル: DefaultValuesUnitTest.cs プロジェクト: elavanis/Mud
        public void DefaultValues_DiceForWeaponLevel_Level1()
        {
            IDice dice = defaultValue.DiceForWeaponLevel(1);

            Assert.AreEqual(9, dice.Die);
            Assert.AreEqual(3, dice.Sides);
        }
コード例 #23
0
 public void Use(Agent agent, Globe globe, IDice dice)
 {
     if (globe.LocalitiesCells.TryGetValue(agent.Location, out var currentLocality))
     {
         currentLocality.Population++;
     }
 }
コード例 #24
0
        /// <summary>
        /// Выбирает случайное значение из списка.
        /// </summary>
        /// <typeparam name="T"> Тип элементов списка. </typeparam>
        /// <param name="dice"> Кость, на основе которой делать случайный выбор. </param>
        /// <param name="list"> Список элементов, из которого выбирать элемент. </param>
        /// <param name="count">Количество выбранных значений. </param>
        /// <returns> Случайный элемент из списка. </returns>
        public static IEnumerable <T> RollFromList <T>(this IDice dice, IList <T> list, int count)
        {
            if (dice is null)
            {
                throw new ArgumentNullException(nameof(dice));
            }

            if (list is null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (list.Count < count)
            {
                throw new ArgumentException("Требуемое количество должно быть не меньше размера списка.", nameof(count));
            }

            var openList = new List <T>(list);

            for (var i = 0; i < count; i++)
            {
                var rolledItem = dice.RollFromList(openList);

                yield return(rolledItem);

                openList.Remove(rolledItem);
            }
        }
コード例 #25
0
ファイル: DefaultValuesUnitTest.cs プロジェクト: elavanis/Mud
        public void DefaultValues_DiceForTrapLevel_Level100()
        {
            IDice die = defaultValue.DiceForTrapLevel(100);

            Assert.AreEqual(2776, die.Die);
            Assert.AreEqual(4001, die.Sides);
        }
コード例 #26
0
ファイル: DefaultValuesUnitTest.cs プロジェクト: elavanis/Mud
        public void DefaultValues_DiceForTrapLevel_Level1()
        {
            IDice die = defaultValue.DiceForTrapLevel(1);

            Assert.AreEqual(40, die.Die);
            Assert.AreEqual(5, die.Sides);
        }
コード例 #27
0
 public PrisonGuard(Banker banker, IDice dice)
 {
     turnsInJailPerPlayer = new Dictionary<String, Int32>();
     holdsGetOutOfJailFree = new List<String>();
     this.banker = banker;
     this.dice = dice;
 }
コード例 #28
0
ファイル: ConsolePlayer.cs プロジェクト: larry126/Monopoly
        public override int RollDice(IDice dice, int noOfDice = 2)
        {
            int rollResult = dice.Roll(noOfDice);

            Console.WriteLine("You have rolled " + rollResult);
            return(rollResult);
        }
コード例 #29
0
ファイル: PlayersFactory.cs プロジェクト: germankuber/Tateti
        public Players Create(IDice dice)
        {
            var players = new Players(_player1, _player2);

            players.SetupPlayersPositions(dice);
            return(players);
        }
コード例 #30
0
        /// <summary>
        /// Display the dice roll results in verbose format.
        /// Helpful in debugging dice expression strings.
        /// </summary>
        /// <param name="dice">Dice expression used</param>
        /// <param name="result">Dice results to display</param>
        /// <returns>Resulting display text.</returns>
        private string VerboseRollDisplay(IDice dice, DiceResult result)
        {
            StringBuilder output = new StringBuilder();

            output.AppendFormat(
                "DiceRoll => {0}",
                this.diceConverter.Convert(result, typeof(string), null, "default"));

            output.AppendLine("===============================================");
            output.AppendFormat("  DiceResult.DieRollerUsed: {0}\r\n", result.DieRollerUsed);
            output.AppendFormat("  DiceResult.NumberTerms: {0}\r\n", result.Results.Count);
            output.AppendLine("  Terms list:");
            output.AppendLine("  ---------------------------");

            foreach (TermResult term in result.Results)
            {
                output.AppendFormat("    TermResult.Type: {0}\r\n", term.Type);
                output.AppendFormat("    TermResult.IncludeInResult: {0}\r\n", term.AppliesToResultCalculation);
                output.AppendFormat("    TermResult.Scalar: {0}\r\n", term.Scalar);
                output.AppendFormat("    TermResult.Value: {0}\r\n", term.Value);
                output.AppendLine();
            }

            output.AppendLine("  ---------------------------");
            output.AppendFormat("  Total Roll: {0}\r\n", result.Value);

            return(output.ToString());
        }
コード例 #31
0
        public void RoleDiceForeNumTest()
        {
            IDice dice = DiceFactory.CreateDice(4);
            int   num  = dice.RoleDiceForeNum();

            Assert.NotEqual(0, num);
        }
コード例 #32
0
        public static Dictionary<Int32, OwnableSpace> CreateRealEstate(IDice dice)
        {
            var realEstate = new Dictionary<Int32, OwnableSpace>();

            realEstate.Add(BoardConstants.MEDITERANEAN_AVENUE, new Property("Mediteranean Avenue", 60, 2, GROUPING.PURPLE, 50, new[] { 10, 30, 90, 160, 250 }));
            realEstate.Add(BoardConstants.BALTIC_AVENUE, new Property("Baltic Avenue", 60, 4, GROUPING.PURPLE, 50, new[] { 20, 60, 180, 320, 450 }));
            realEstate.Add(BoardConstants.ORIENTAL_AVENUE, new Property("Oriental Avenue", 100, 6, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.VERMONT_AVENUE, new Property("Vermont Avenue", 100, 6, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.CONNECTICUT_AVENUE, new Property("Connecticut Avenue", 120, 8, GROUPING.LIGHT_BLUE, 50, new[] { 30, 90, 270, 400, 550 }));
            realEstate.Add(BoardConstants.ST_CHARLES_PLACE, new Property("St. Charles Place", 140, 10, GROUPING.PINK, 100, new[] { 50, 150, 450, 625, 750 }));
            realEstate.Add(BoardConstants.STATES_AVENUE, new Property("States Avenue", 140, 10, GROUPING.PINK, 100, new[] { 50, 150, 450, 625, 750 }));
            realEstate.Add(BoardConstants.VIRGINIA_AVENUE, new Property("Virginia Avenue", 160, 12, GROUPING.PINK, 100, new[] { 60, 180, 500, 700, 900 }));
            realEstate.Add(BoardConstants.ST_JAMES_PLACE, new Property("St. James Place", 180, 14, GROUPING.ORANGE, 100, new[] { 70, 200, 550, 750, 950 }));
            realEstate.Add(BoardConstants.TENNESSEE_AVENUE, new Property("Tennessee Avenue", 180, 14, GROUPING.ORANGE, 100, new[] { 70, 200, 550, 750, 950 }));
            realEstate.Add(BoardConstants.NEW_YORK_AVENUE, new Property("New York Avenue", 200, 16, GROUPING.ORANGE, 100, new[] { 80, 220, 600, 800, 1000 }));
            realEstate.Add(BoardConstants.KENTUCKY_AVENUE, new Property("Kentucky Avenue", 220, 18, GROUPING.RED, 150, new[] { 90, 250, 700, 875, 1050 }));
            realEstate.Add(BoardConstants.INDIANA_AVENUE, new Property("Indiana Avenue", 220, 18, GROUPING.RED, 150, new[] { 90, 250, 700, 875, 1050 }));
            realEstate.Add(BoardConstants.ILLINOIS_AVENUE, new Property("Illinois Avenue", 240, 20, GROUPING.RED, 150, new[] { 100, 300, 750, 925, 1100 }));
            realEstate.Add(BoardConstants.ATLANTIC_AVENUE, new Property("Atlantic Avenue", 260, 22, GROUPING.YELLOW, 150, new[] { 110, 330, 800, 975, 1150 }));
            realEstate.Add(BoardConstants.VENTNOR_AVENUE, new Property("Ventnor Avenue", 260, 22, GROUPING.YELLOW, 150, new[] { 110, 330, 800, 975, 1150 }));
            realEstate.Add(BoardConstants.MARVIN_GARDENS, new Property("Marvin Gardens", 280, 24, GROUPING.YELLOW, 150, new[] { 120, 360, 850, 1025, 1200 }));
            realEstate.Add(BoardConstants.PACIFIC_AVENUE, new Property("Pacific Avenue", 300, 26, GROUPING.GREEN, 200, new[] { 130, 390, 900, 1100, 1275 }));
            realEstate.Add(BoardConstants.NORTH_CAROLINA_AVENUE, new Property("North Carolina Avenue", 300, 26, GROUPING.GREEN, 200, new[] { 130, 390, 900, 1100, 1275 }));
            realEstate.Add(BoardConstants.PENNSYLVANIA_AVENUE, new Property("Pennsylvania Avenue", 320, 28, GROUPING.GREEN, 200, new[] { 150, 450, 1000, 1200, 1400 }));
            realEstate.Add(BoardConstants.PARK_PLACE, new Property("Park Place", 350, 35, GROUPING.DARK_BLUE, 200, new[] { 175, 500, 1100, 1300, 1500 }));
            realEstate.Add(BoardConstants.BOARDWALK, new Property("Boardwalk", 400, 50, GROUPING.DARK_BLUE, 200, new[] { 200, 600, 1400, 1700, 2000 }));
            realEstate.Add(BoardConstants.SHORT_LINE, new Railroad("Short Line"));
            realEstate.Add(BoardConstants.BandO_RAILROAD, new Railroad("B&O Railroad"));
            realEstate.Add(BoardConstants.PENNSYLVANIA_RAILROAD, new Railroad("Pennsylvania Railroad"));
            realEstate.Add(BoardConstants.READING_RAILROAD, new Railroad("Reading Railroad"));
            realEstate.Add(BoardConstants.WATER_WORKS, new Utility("Water Works", dice));
            realEstate.Add(BoardConstants.ELECTRIC_COMPANY, new Utility("Electric Company", dice));

            return realEstate;
        }
コード例 #33
0
        public void Play(IDice dice)
        {
            var luckyScore = getLuckyScore(dice);

            foreach (var player in players)
            {
                bool win = false;
                for (int i = 0; i < player.CurrentBets.Count; i++)
                {
                    if (player.CurrentBets[i].Chips.Amount % 5 != 0)
                    {
                        throw new InvalidOperationException();
                    }

                    if (player.CurrentBets[i].Score == luckyScore)
                    {
                        win = true;
                        player.Win(player.CurrentBets[i].Chips.Amount * 6);
                        break;
                    }
                }
                if (!win)
                {
                    player.Lose();
                }
            }
        }
コード例 #34
0
        public void WhenPlayerRolls4_ThenTokenShouldMove4Spaces(GameEngine gameEngine, Player player,
                                                                IDice dice, int diceRollResult, int positionBeforeMove)
        {
            "Given the player rolls a 4"
            .x(() =>
            {
                dice = A.Fake <IDice>();
                A.CallTo(() => dice.Roll()).Returns(4);
                player           = new Player(1, "Player 1", dice);
                int totalSquares = 100;
                gameEngine       = new GameEngine(totalSquares);
                gameEngine.AddPlayer(player);
                gameEngine.Start();
            });

            "When they move their token"
            .x(() =>
            {
                positionBeforeMove = gameEngine.CurrentSquareForPlayer(player);
                gameEngine.MovePlayer(player, player.RollDice());
            });
            "Then the token should move 4 space"
            .x(() =>
            {
                int positionAfterMove = gameEngine.CurrentSquareForPlayer(player);
                int result            = positionAfterMove - positionBeforeMove;
                result.Should().Be(4);
            });
        }
コード例 #35
0
 public TaskHandler(IRealtor realtor, List<IPlayer> players, IMovementHandler movementHandler, IBanker banker, IDice dice)
 {
     this.movementHandler = movementHandler;
     this.players = players;
     this.banker = banker;
     this.dice = dice;
 }
コード例 #36
0
 public TownController(GameWorld gameWorld, ISaveGameRepository saveGameRepository, IAsciiArtRepository asciiArtRepository, IDice dice)
 {
     _gameWorld = gameWorld;
     _saveGameRepository = saveGameRepository;
     _asciiArtRepository = asciiArtRepository;
     _dice = dice;
 }
コード例 #37
0
ファイル: DefaultValuesUnitTest.cs プロジェクト: elavanis/Mud
        public void DefaultValues_DiceForWeaponLevel_Level100()
        {
            IDice dice = defaultValue.DiceForWeaponLevel(100);

            Assert.AreEqual(27, dice.Die);
            Assert.AreEqual(12539, dice.Sides);
        }
コード例 #38
0
        public PlayerCursor(List <Player> players, IDice dice)
        {
            Dice     = dice;
            _players = players;

            _currentPlayer = 0;
        }
コード例 #39
0
 public Player(IToken token, IDice dice, IBoard board, IOutputStream outputStream)
 {
     _token        = token;
     _dice         = dice;
     _board        = board;
     _outputStream = outputStream;
 }
コード例 #40
0
        public Queue <ICard> BuildChanceDeck(IDice dice)
        {
            var deck = new List <ICard>();

            deck.Add(new MoveAndPassGoCard("Advance To Go", BoardConstants.GO, boardHandler));
            deck.Add(new FlatCollectCard("Bank Pays You Dividend", 50, banker));
            deck.Add(new MoveBackThreeCard(boardHandler));
            deck.Add(new MoveToNearestUtilityCard(boardHandler, dice));
            deck.Add(new GoToJailCard(jailHandler));
            deck.Add(new FlatPayCard("Pay Poor Tax", 15, banker));
            deck.Add(new MoveAndPassGoCard("Advance To St. Charles Place", BoardConstants.ST_CHARLES_PLACE, boardHandler));
            deck.Add(new PayAllPlayersCard(players, banker));
            deck.Add(new MoveToNearestRailroadCard(boardHandler));
            deck.Add(new MoveToNearestRailroadCard(boardHandler));
            deck.Add(new MoveAndPassGoCard("Take a Ride on the Reading", BoardConstants.READING_RAILROAD, boardHandler));
            deck.Add(new MoveAndPassGoCard("Take a walk on the Boardwalk", BoardConstants.BOARDWALK, boardHandler));
            deck.Add(new FlatCollectCard("Your Building And Loan Matures", 150, banker));
            deck.Add(new MoveAndPassGoCard("Advance to Illinois Avenue", BoardConstants.ILLINOIS_AVENUE, boardHandler));
            deck.Add(new GetOutOfJailFreeCard(jailHandler));
            deck.Add(new HousesAndHotelsCard("Make General Repairs On All Your Property", 25, 100, realEstateHandler, banker));

            var shuffledDeck = deck.OrderBy(x => random.Next());

            return(new Queue <ICard>(shuffledDeck));
        }
コード例 #41
0
        public void Use(Agent agent, Globe globe, IDice dice)
        {
            var highestBranchs = agent.Skills.OrderBy(x => x.Value)
                                 .Where(x => x.Value >= 1);

            if (highestBranchs.Any())
            {
                var firstBranch = highestBranchs.First();

                var agentDisciple = new Agent
                {
                    Name      = agent.Name + " disciple",
                    Localtion = agent.Localtion,
                    Realm     = agent.Realm,
                    Hp        = 3
                };

                globe.Agents.Add(agent);

                Helper.AddAgentToCell(globe.AgentCells, agentDisciple.Localtion, agent);
            }
            else
            {
                globe.AgentCrisys++;
            }
        }
コード例 #42
0
 public TurnHandler(IDice dice, IBoardHandler boardHandler, IJailHandler jailHandler, IOwnableHandler realEstateHandler, IBanker banker)
 {
     this.dice = dice;
     this.boardHandler = boardHandler;
     this.jailHandler = jailHandler;
     this.realEstateHandler = realEstateHandler;
     this.banker = banker;
 }
コード例 #43
0
 public SpellBookController(GameWorld gameWorld, IAsciiArtRepository asciiArtRepository, IDice dice)
 {
     _gameWorld = gameWorld;
     _asciiArtRepository = asciiArtRepository;
     _dice = dice;
     _title = DefaultTitle;
     _information = DefaultInformation;
 }
コード例 #44
0
ファイル: ChanceFactory.cs プロジェクト: kevPo/Monopoly
 public ChanceFactory(IBanker banker, IJailRoster jailRoster, 
     GameBoard board, IDice dice)
 {
     this.banker = banker;
     this.jailRoster = jailRoster;
     this.board = board;
     this.dice = dice;
 }
コード例 #45
0
ファイル: Turn.cs プロジェクト: kevPo/Monopoly
 public Turn(Int32 playerId, IDice dice, IJailRoster jailRoster, IBoard board)
 {
     this.playerId = playerId;
     this.dice = dice;
     this.jailRoster = jailRoster;
     this.board = board;
     this.locations = board.Locations;
 }
コード例 #46
0
 public void SetUp()
 {
     _enemyBar = new Lair();
     _agent = new Agent();
     _dice = MockRepository.GenerateStub<IDice>();
     _mission = new InfiltrationMission(_dice);
     Arrange();
 }
コード例 #47
0
ファイル: InnController.cs プロジェクト: ServerGame/NullQuest
 public InnController(GameWorld gameWorld, ISaveGameRepository saveGameRepository, IAsciiArtRepository asciiArtRepository, IDice dice)
 {
     _gameWorld = gameWorld;
     _saveGameRepository = saveGameRepository;
     _asciiArtRepository = asciiArtRepository;
     _dice = dice;
     _title = "Welcome to the Tolbooth Tavern. The food ain't great and the beds aren't soft. But it's the only Inn in town.";
 }
コード例 #48
0
 public TurnHandler(IJailer jailer, IBanker banker, IMovementHandler movementHandler, IDice dice,
     ICardHandler cardHandler)
 {
     this.jailer = jailer;
     this.banker = banker;
     this.movementHandler = movementHandler;
     this.dice = dice;
     this.cardHandler = cardHandler;
 }
コード例 #49
0
ファイル: HighRollTurn.cs プロジェクト: Corne/VOC
 public HighRollTurn(IPlayer player, IDice dice)
 {
     if (player == null)
         throw new ArgumentNullException(nameof(player));
     if (dice == null)
         throw new ArgumentNullException(nameof(dice));
     Player = player;
     this.dice = dice;
 }
コード例 #50
0
        public JailHandler(IDice dice, IBoardHandler boardHandler, IBanker banker)
        {
            this.dice = dice;
            this.boardHandler = boardHandler;
            this.banker = banker;

            turnsInJail = new Dictionary<IPlayer, Int16>();
            cards = new Dictionary<GetOutOfJailFreeCard, IPlayer>(2);
        }
コード例 #51
0
        public Board Create(Banker banker, IEnumerable<String> players, IDice dice, PrisonGuard guard)
        {
            var board = new Board(players);
            var spaces = CreateSpaces(banker, board, dice, guard);

            board.SetSpaces(spaces);

            return board;
        }
コード例 #52
0
 public TraditionalLocationFactory(TraditionalBanker banker, IDice dice, 
     TraditionalJailRoster jailRoster, IBoard board,
     CardDeckFactory cardDeckFactory)
 {
     this.banker = banker;
     this.dice = dice;
     this.jailRoster = jailRoster;
     this.board = board;
     this.cardDeckFactory = cardDeckFactory;
 }
コード例 #53
0
ファイル: RollState.cs プロジェクト: Corne/VOC
        public RollState(IGameTurn turn, IDice dice)
        {
            if (turn == null)
                throw new ArgumentNullException(nameof(turn));
            if (dice == null)
                throw new ArgumentNullException(nameof(dice));

            this.turn = turn;
            this.dice = dice;
        }
コード例 #54
0
ファイル: Game.cs プロジェクト: mathieucans/TDDice
 public void Freeze(IDice dice)
 {
     if (!played)
     {
         throw new Exception();
     }
     rollableDices.Remove(dice);
     frozenDices.Add(dice);
     UpdateScore();
     played = false;
 }
コード例 #55
0
 public void SetUp()
 {
     player = "Horse";
     players = new List<String> { player };
     banker = new Banker(players, 1500);
     var boardFactory = new BoardFactory();
     dice = new LoadedDice();
     var guard = new PrisonGuard(banker, dice);
     board = boardFactory.Create(banker, players, dice, guard);
     go = new Go(banker);
 }
コード例 #56
0
        public EffectOutcome Execute(IDice dice, Combatant attacker, Combatant defender)
        {
            var damage = (int) Math.Round(dice.Roll(Magnitude) * (1 + ((double)attacker.Intelligence.GetStatModifier() / 9)), MidpointRounding.AwayFromZero);
            defender.LowerHealth(damage);

            return new EffectOutcome()
                {
                    Description = string.Format("{0} takes {1} points of damage!", defender.Name, damage),
                    Damage = damage
                };
        }
コード例 #57
0
ファイル: UtilityTests.cs プロジェクト: kevPo/Monopoly
 public void SetUp()
 {
     playerOneId = 0;
     playerTwoId = 1;
     dice = new FakeDice(new [] { new FakeRoll(7, 3) });
     banker = new TraditionalBanker(new [] { playerOneId, playerTwoId });
     var utilities = new List<Utility>();
     electric = new Utility(12, "Electric Company", 150, 0, banker, utilities, dice);
     waterWorks = new Utility(28, "Water Works", 150, 0, banker, utilities, dice);
     utilities.AddRange(new Utility[] { electric, waterWorks });
 }
コード例 #58
0
ファイル: CombatEngine.cs プロジェクト: ServerGame/NullQuest
 public CombatEngine(GameWorld gameWorld, IMonsterFactory monsterFactory, ICombatantSelector combantSelector, IDice dice)
 {
     _gameWorld = gameWorld;
     _combantSelector = combantSelector;
     _dice = dice;
     _combatContext = new CombatContext();
     _combatContext.Player = _gameWorld.Player;
     _combatContext.Monster = monsterFactory.CreateMonster(_gameWorld, _combatContext);
     _combatContext.Player.HasFledCombat = false;
     _combatContext.Monster.HasFledCombat = false;
 }
コード例 #59
0
ファイル: Game.cs プロジェクト: BrandonGriffin/MonopolyKata
        public Game(IEnumerable<String> players, IDice dice, Board board, PlayerTurnCounter turns, PrisonGuard guard)
        {
            CheckNumberOfPlayers(players);
            Players = players;
            this.dice = dice;
            this.board = board;
            this.turns = turns;
            this.guard = guard;

            ShufflePlayers();
        }
コード例 #60
0
        public MonsterFactory(IWeaponFactory weaponFactory, ISpellFactory spellFactory, IItemFactory itemFactory, IMonsterDataRepository monsterDataRepository, IActionSelector actionSelector, IStatsGenerator statsGenerator, IDice dice)
        {
            this.weaponFactory = weaponFactory;
            this.spellFactory = spellFactory;
            this.itemFactory = itemFactory;
            _actionSelector = actionSelector;
            _statsGenerator = statsGenerator;
            _dice = dice;

            monsterArchetypes = monsterDataRepository.GetAllMonsterArchetypes().ToList();
            monsterModifiers = monsterDataRepository.GetAllMonsterModifiers().ToList();
        }