예제 #1
0
        public void SimpleTest() //?
        {
            Game.Map = Map_creator.CreateMap(@"
WWWWWWWWWWWWWWWW
W              W
W    S         W
W              W
W           P  W
WWWWWWWWWWWWWWWW", "\n");
            Game.PackMansPosition = new Point(5, 2);
            Game.PointsAtLevel    = 7;
            Game.PointsEated      = 2;
            Game.CurrentBehavior  = MonsterBehavior.chase;

            var pinkyPos = new Point(12, 4);
            var pinky    = new Blinky(Directions.Right);

            var result = new List <Point>()
            {
                pinkyPos
            };

            for (var i = 0; i < 10; i++)
            {
                var move = pinky.Act(pinkyPos.X, pinkyPos.Y);
                pinkyPos.X += move.DeltaX;
                pinkyPos.Y += move.DeltaY;
                result.Add(pinkyPos);
            }
            Assert.IsNotEmpty(result);
            Assert.AreEqual(new Point(4, 2), pinkyPos);
        }
예제 #2
0
        public void TestClashGhost()
        {
            Game.CreateMap(TestGhost.Map);
            var blinky = new Blinky(Directions.Nothing);
            var pacman = new PackMan(Directions.Right);

            Assert.AreEqual(pacman.DeadInConflict(blinky), true);
            Game.IsMonsterStyle = true;
            Assert.AreEqual(pacman.DeadInConflict(blinky), false);
        }
예제 #3
0
        public void TestChaseMode()
        {
            Game.Map = Map_creator.CreateMap("    \r\n    \r\n    \r\n    \r\nB   ", "\r\n");
            Game.PackMansPosition = new Point(3, 0);
            Game.CurrentBehavior  = MonsterBehavior.chase;
            Game.PointsAtLevel    = 7;
            Game.PointsEated      = 2;
            var blinkyPos = new Point(0, 3);
            var blinky    = new Blinky(Directions.Right);

            for (var i = 0; i < 6; i++)
            {
                var a = blinky.Act(blinkyPos.X, blinkyPos.Y);
                blinkyPos.X += a.DeltaX;
                blinkyPos.Y += a.DeltaY;
            }
            Assert.AreEqual(Game.PackMansPosition, blinkyPos);
        }
예제 #4
0
        public void TestTeleports2()
        {
            Game.CreateMap(Map);
            var blinky = new Blinky(Directions.Right);
            var start  = new Point(27, 13);
            var goal   = new Point(1, 13);
            var count  = 0;

            while (start != goal)
            {
                var move = blinky.FindPath(start.X, start.Y, goal);
                start.X += move.DeltaX;
                start.Y += move.DeltaY;
                count++;
            }
            Assert.AreEqual(2, count);
            Assert.AreEqual(Directions.Right, blinky.CurrentDirection);
            Assert.AreEqual(start, goal);
        }
예제 #5
0
        public void FindPathTest()
        {
            Game.CreateMap(Map);
            var blinky = new Blinky(Directions.Left);
            var bPos   = new Point(14, 10);
            var pacPos = new Point(14, 27);
            var count  = 0;

            while (bPos != pacPos)
            {
                var move = blinky.FindPath(bPos.X, bPos.Y, pacPos);
                bPos.X += move.DeltaX;
                bPos.Y += move.DeltaY;
                count++;
            }
            Assert.AreEqual(45, count);
            Assert.AreEqual(Directions.Right, blinky.CurrentDirection);
            Assert.AreEqual(pacPos, bPos);
        }
예제 #6
0
        public void TestFrightenedMode()
        {
            Game.Map = Map_creator.CreateMap("    \r\n    \r\n    \r\nB   ", "\r\n");
            Game.PackMansPosition = new Point(3, 0);
            Game.CurrentBehavior  = MonsterBehavior.frightened;
            var blinkyPos = new Point(0, 3);
            var blinky    = new Blinky(Directions.Right);
            var res       = new List <CreatureCommand>();

            for (var i = 0; i < 6; i++)
            {
                var a = blinky.Act(blinkyPos.X, blinkyPos.Y);
                blinkyPos.X += a.DeltaX;
                blinkyPos.Y += a.DeltaY;
                res.Add(a);
            }
            Assert.IsNotEmpty(res);
            Assert.AreEqual(res.Count, 6);
        }
예제 #7
0
        public void TestScatterMode()
        {
            var game = new Game();

            Game.Map = Map_creator.CreateMap("WWWWWW\r\nW    W\r\nW    W\r\nW    W\r\nWB   W\r\nWWWWWW", "\r\n");
            Game.PackMansPosition = new Point(4, 1);
            Game.CurrentBehavior  = MonsterBehavior.scatter;
            Game.PointsAtLevel    = 7;
            Game.PointsEated      = 2;
            var blinkyPos = new Point(1, 4);
            var blinky    = new Blinky(Directions.Right);

            for (var i = 0; i < 6; i++)
            {
                var a = blinky.Act(blinkyPos.X, blinkyPos.Y);
                blinkyPos.X += a.DeltaX;
                blinkyPos.Y += a.DeltaY;
            }
            Assert.AreEqual(Game.PackMansPosition, blinkyPos);
        }
예제 #8
0
        public void SimpleTest()
        {
            Game.Map = Map_creator.CreateMap(TestGhost.Map, "\r\n");
            var blinky    = new Blinky(Directions.Left);
            var blinkyPos = new Point(14, 10);

            Game.PackMansPosition = new Point(14, 27);
            var result = new List <Point>()
            {
                blinkyPos
            };

            while (blinkyPos != Game.PackMansPosition)
            {
                var move = blinky.Act(blinkyPos.X, blinkyPos.Y);
                blinkyPos.X += move.DeltaX;
                blinkyPos.Y += move.DeltaY;
                result.Add(blinkyPos);
            }
            Assert.IsNotEmpty(result);
            Assert.AreEqual(46, result.Count);
        }
예제 #9
0
        public void TestSteeps()
        {
            Game.Map = Map_creator.CreateMap(@"
WWWWW
WS  W
W   W
WP  W
WWWWW", "\n");
            Game.PackMansPosition = new Point(1, 1);
            Game.PointsAtLevel    = 7;
            Game.PointsEated      = 2;
            Game.CurrentBehavior  = MonsterBehavior.chase;

            var pinkyPos = new Point(1, 3);
            var pinky    = new Blinky(Directions.Right);

            for (var i = 0; i < 2; i++)
            {
                var a = pinky.Act(pinkyPos.X, pinkyPos.Y);
                pinkyPos.X += a.DeltaX;
                pinkyPos.Y += a.DeltaY;
            }
            Assert.AreEqual(Game.PackMansPosition, pinkyPos);
        }