public void TestPathFinder() { Graph graph = new Graph(10, 10); Node startDestinaton = graph.getNode(1, 1); Node finalDestination = graph.getNode(5, 5); System.Diagnostics.Debug.WriteLine(startDestinaton); BasicCreature creature = new BasicCreature(startDestinaton, finalDestination, graph, 100, 100, null); Mooving mooving = (Mooving)creature.getMoovnig(); mooving.onStart(); Node lastPosition = null; while (lastPosition != creature.getPosition()) //ked sa rovnaju posledny node a aktualny, znamena ze sa uz nehybem dalej { lastPosition = creature.getPosition(); //najdi novu poziciu mooving.prepare(); creature.action(); System.Diagnostics.Debug.WriteLine(creature.getPosition()); //debug vypis noveho nodu } Assert.AreEqual(finalDestination, creature.getPosition()); }
public event EventHandler <MoovingEventArgs> Mooving; //MoovingEventArgs - класс который описывает передачу необходимых нам параметров // любой класс который мы исп внутри EventHandler должен быть унаследован от баз класса EventArgs public void Moove(int distance) //для событий. Например мы хотим сделать опционально подписку на сообщения { for (int i = 1; i <= distance; i++) { Thread.Sleep(1000); //? это упрощение которое подразумевало if(Mooving != null) Mooving?.Invoke(this, new MoovingEventArgs(string.Format($"Идёт перемещение... {i} пройденых метров"))); //this указывает на текущий экз класса } }