예제 #1
0
    //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
        }
    }
예제 #2
0
    //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);
        }
    }