//100 punti, FA TUTTO IL LAVORO static void DrawHelper() { int scelta = r.Next(1, 4); int nextPx = 0, nextPy = 0; //DEVONO ESSERE INIZIALIZZATI // Console.WriteLine(scelta); DEBUG //PARTE IN CUI SCEGLIE IL PUNTO SUCCESSIVO BASANDOSI SULLA DISTANZA switch (scelta) { case 1: { nextPx = ((p1x + X) / DISTANCE_FRACTION); nextPy = ((p1y + Y) / DISTANCE_FRACTION); break; } case 2: { nextPx = ((p2x + X) / DISTANCE_FRACTION); nextPy = ((p2y + Y) / DISTANCE_FRACTION); break; } case 3: { nextPx = ((p3x + X) / DISTANCE_FRACTION); nextPy = ((p3y + Y) / DISTANCE_FRACTION); break; } default: { Console.WriteLine("error"); break; } } //Console.WriteLine(nextPx + "; " + nextPy +";\n"); DEBUG //LOCK PER GESTIRE IL MULTITHREADING lock (F1) { Graphics g = F1.CreateGraphics(); g.FillRectangle((Brush)Brushes.Azure, nextPx, nextPy, 2, 2); } i = i + 1; if (i < 100) { DrawHelper(); // Console.WriteLine("Done {0}", i); DEBUG } }
//100 punti static void DrawHelper() { int scelta = r.Next(1, 5); int nextPx = 0, nextPy = 0; while (((scelta - buf) == 2) || ((scelta - buf) == -2)) { scelta = r.Next(1, 5); }// VERIFICA CHE NON SIA IL VERTICE OPPOSTO // Console.WriteLine(scelta); DEBUG //PARTE IN CUI CALCOLA LA DISTANZA switch (scelta) { case 1: { nextPx = ((p1x + X) / DISTANCE_FRACTION); nextPy = ((p1y + Y) / DISTANCE_FRACTION); break; } case 2: { nextPx = ((p2x + X) / DISTANCE_FRACTION); nextPy = ((p2y + Y) / DISTANCE_FRACTION); break; } case 3: { nextPx = ((p3x + X) / DISTANCE_FRACTION); nextPy = ((p3y + Y) / DISTANCE_FRACTION); break; } case 4: { nextPx = ((p4x + X) / DISTANCE_FRACTION); nextPy = ((p4y + Y) / DISTANCE_FRACTION); break; } default: { Console.WriteLine("error"); break; } } buf = scelta;//BUFFER PER MEMORIZZARE LA SCELTA PRECEDENTE lock (F1) { Graphics g = F1.CreateGraphics(); g.FillRectangle((Brush)Brushes.Azure, nextPx, nextPy, 2, 2); } i = i + 1; if (i < 100) { DrawHelper(F1, nextPx, nextPy, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, i, buf, r); } }