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(); }
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); }
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); }
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; } }
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(); }