static void Main(string[] args) { MonRobot robot = new MonRobot("c3po"); MonRobot robot2 = new MonRobot("crp1", 10); MonRobot robot3 = new MonRobot("r2d2", 10, 20); /// Pour expliquer les pointeurs vers objet MonRobot robot5 = robot; // Il manque les coordonnées de base MonRobot robot4 = new MonRobot("yoda", 10, 20, 1, 2); robot4.SeDeplacer(1, 2); robot.SeDeplacer(1, 1); robot.AfficherPositionnement(); robot5.AfficherPositionnement(); // c'est le même robot en fait List <MonRobot> robotList = new List <MonRobot>(); for (int i = 0; i < 10; i++) { Tuple <int, int> coordonnees = RetourneNouvellesCoordonnees(); robotList.Add(new MonRobot("nom " + i, 10, 20, coordonnees.Item1, coordonnees.Item2) { Taille = 10 }); } int j = 0; while (true) { robotList.ForEach(item => { Tuple <int, int> coordonnees = RetourneNouvellesCoordonnees(); item.SeDeplacer(coordonnees.Item1, coordonnees.Item2); Thread.Sleep(100); }); j++; if (j % 2 == 0) { robotList.ForEach(item => { Console.WriteLine("Avant : Taille du robot " + item.Nom + " : " + item.Taille); Reinitialiser(item); Console.WriteLine("Après : Taille du robot " + item.Nom + " : " + item.Taille); }); } } Console.ReadLine(); }
static void Reinitialiser(MonRobot robot) // Copie de la référence, pas des valeurs { robot.Taille = (new Random()).Next(0, 100); robot.SeDeplacer(0, 0); }