コード例 #1
0
        private IEnumerable <string> GetRoomLines(Room room, YoloTeam team)
        {
            var roomLines = new List <string>();

            for (int h = 0; h < room.Size.Height; h++)
            {
                var stringBuilder = new StringBuilder();
                for (int w = 0; w < room.Size.Width; w++)
                {
                    var currentTilePosition = new Position(w, h);
                    if (currentTilePosition.Equals(team.Position))
                    {
                        stringBuilder.Append(_consolePresentationConfiguration.TeamCharacter);
                    }
                    else if (room.Monsters.Any(monster => monster.Position.Equals(currentTilePosition)))
                    {
                        stringBuilder.Append(_consolePresentationConfiguration.MonsterCharacter);
                    }
                    else if (room.Tiles[currentTilePosition.X, currentTilePosition.Y].HasShrine)
                    {
                        stringBuilder.Append(_consolePresentationConfiguration.ShrineCharacter);
                    }
                    else
                    {
                        stringBuilder.Append(_consolePresentationConfiguration.GetTileCharacter(room.Tiles[w, h]));
                    }
                }
                roomLines.Add(CenterHorizontally(stringBuilder.ToString(), _displaySize.Width - 2));
            }

            return(roomLines);
        }
コード例 #2
0
ファイル: Engine.cs プロジェクト: sheldarr/yolo-crawler
 public Engine(Presentation presentation, Logger logger, Map map, YoloTeam yoloTeam)
 {
     Map           = map;
     _presentation = presentation;
     _logger       = logger;
     _yoloTeam     = yoloTeam;
     InitializeGame();
 }
コード例 #3
0
 private void InitializeGame()
 {
     Map                  = MapFactory.GenerateRandomMap();
     _room                = Map.GetRandomStartingRoom();
     _yoloTeam            = new YoloTeam(_room.StartingPosition);
     _worldRepresentation = new WorldRepresentation(_room, _yoloTeam);
     _presentation.Draw(_worldRepresentation);
 }
コード例 #4
0
        private static YoloTeam GetDamagedYoloTeam()
        {
            var yoloTeam = new YoloTeam(10);

            yoloTeam.Take(new Damage
            {
                Hitpoints = 4
            });
            return(yoloTeam);
        }
コード例 #5
0
        public void ShouldPlaceYoloTeamAtRoomStartingPosition()
        {
            // given
            var startingPosition = new Position(1, 1);
            var room             = RoomFactory.CreateEmptyRoom(new Size(4, 4), startingPosition);

            // when
            var team = new YoloTeam(room.StartingPosition);

            // then
            Assert.That(team.Position, Is.EqualTo(startingPosition));
        }
コード例 #6
0
        public void ShouldMoveInRoomWhenPossible()
        {
            // given
            var room = RoomFactory.CreateEmptyRoom(new Size(4, 4), new Position(1, 1));

            var team = new YoloTeam(room.StartingPosition);

            // when
            team.Move(MovementOffsets.RightDown);

            // then
            Assert.That(team.Position, Is.EqualTo(new Position(2, 2)));
        }
コード例 #7
0
        public void ShouldNotExceedBaseHitpointsWhenHealing()
        {
            //given
            const int teamMaxHitpoints = 10;
            var       yoloTeam         = new YoloTeam(StartingPosition, teamMaxHitpoints);

            yoloTeam.Take(new Damage {
                Hitpoints = 2
            });

            const int hitpointsToHeal = 4;

            //when
            yoloTeam.Heal(hitpointsToHeal);

            //then
            Assert.That(yoloTeam.Hitpoints, Is.EqualTo(teamMaxHitpoints));
        }
コード例 #8
0
        public void ShouldHealSpecifiedNumberOfHitpoints()
        {
            //given
            const int teamMaxHitpoints = 10;
            var       yoloTeam         = new YoloTeam(StartingPosition, teamMaxHitpoints);

            yoloTeam.Take(new Damage {
                Hitpoints = 2
            });
            var hitpointsWhenHealing = yoloTeam.Hitpoints;

            const int hitpointsToHeal = 1;

            //when
            yoloTeam.Heal(hitpointsToHeal);

            //then
            Assert.That(yoloTeam.Hitpoints, Is.EqualTo(hitpointsWhenHealing + hitpointsToHeal));
        }
コード例 #9
0
 public WorldRepresentation(Room room, YoloTeam team)
 {
     _room = room;
     _team = team;
 }