Пример #1
0
        public void Test_Game_TurtuleStateChanged_GameIsFinished_Rotate_Ok()
        {
            var exitPoint = new Point()
            {
                X = 1, Y = 1
            };
            var startPosition = new Point()
            {
                X = 1, Y = 2
            };
            List <Point> mins = new List <Point>();

            mins.Add(new Point()
            {
                X = 0, Y = 1
            });
            var h = 10;
            var w = 15;
            TurtleStatusChangedEventArg lastEventArg = null;
            var game = Game.Create(w, h).LayMine(mins).SetExitPoint(exitPoint).AddTurtle(startPosition, Direction.North, (s, e) =>
                                                                                         lastEventArg = e);

            game.Move();
            Assert.AreEqual(lastEventArg.Position, exitPoint);
            Assert.AreEqual(lastEventArg.Direction, Direction.North);
            Assert.AreEqual(lastEventArg.Status, TurtleState.Escaped);
            game.Rotate();
        }
Пример #2
0
        public void Test_Game_TurtuleStateChanged_IsInDanger_Ok()
        {
            var exitPoint = new Point()
            {
                X = 3, Y = 3
            };
            var startPosition = new Point()
            {
                X = 1, Y = 2
            };
            var nextPosition = new Point()
            {
                X = startPosition.X, Y = startPosition.Y + 1
            };
            List <Point> mins = new List <Point>();

            mins.Add(new Point()
            {
                X = 0, Y = 1
            });
            var h = 10;
            var w = 15;
            TurtleStatusChangedEventArg lastEventArg = null;
            var game = Game.Create(w, h).LayMine(mins).SetExitPoint(exitPoint).AddTurtle(startPosition, Direction.North, (s, e) =>
                                                                                         lastEventArg = e);

            game.Rotate();
            game.Rotate();
            game.Move();
            Assert.AreEqual(lastEventArg.Position, nextPosition);
            Assert.AreEqual(lastEventArg.Direction, Direction.South);
            Assert.AreEqual(lastEventArg.Status, TurtleState.IsInDanger);
        }
Пример #3
0
        private void G_TurtleStatusChanged(object sender, TurtleStatusChangedEventArg e)
        {
            CheckForIllegalCrossThreadCalls = false;
            lastState = e.Status;
            var oldPicx = GetCellByPoint(current);

            if (oldPicx != null)
            {
                oldPicx.Image = null;
                oldPicx.Update();
            }
            var picX = GetCellByPoint(e.Position);

            if (picX != null)
            {
                switch (e.Status)
                {
                case TurtleState.Killed:
                    picX.Image = Resources.Dead;
                    AppendText(Color.Red, "Killed" + Environment.NewLine);
                    break;

                case TurtleState.Escaped:
                    picX.Image = Resources.Escaped;
                    AppendText(Color.Green, "Escaped" + Environment.NewLine);
                    break;

                case TurtleState.IsInDanger:

                    switch (e.Direction)
                    {
                    case Engine.Direction.North:
                        picX.Image = Resources.TNorth;

                        break;

                    case Engine.Direction.West:
                        picX.Image = Resources.TWest;
                        break;

                    case Engine.Direction.East:
                        picX.Image = Resources.Teast;

                        break;

                    case Engine.Direction.South:
                        picX.Image = Resources.TSouth;
                        break;
                    }
                    break;
                }
            }
            current = e.Position;
            picX.Update();
            this.Invalidate();
            this.Update();
            this.Refresh();
            Thread.Sleep(500);
        }
Пример #4
0
 private static void G_TurtleStatusChanged(object sender, TurtleStatusChangedEventArg e)
 {
     if (e.Status == TurtleState.Escaped)
     {
         processResultDesc = "Escaped";
         GameIsFinished    = true;
     }
     if (e.Status == TurtleState.Killed)
     {
         processResultDesc = "Killed";
         GameIsFinished    = true;
     }
 }
Пример #5
0
        public void Test_Game_TurtuleStateChanged_CrossTheborders_Move_Ok()
        {
            var exitPoint = new Point()
            {
                X = 1, Y = 1
            };
            var startPosition = new Point()
            {
                X = 0, Y = 0
            };
            List <Point> mins = new List <Point>();

            mins.Add(new Point()
            {
                X = 0, Y = 1
            });
            var h = 10;
            var w = 15;
            TurtleStatusChangedEventArg lastEventArg = null;
            var game = Game.Create(w, h).LayMine(mins).SetExitPoint(exitPoint).AddTurtle(startPosition, Direction.North, (s, e) =>
                                                                                         lastEventArg = e);

            game.Move();
        }