+ Rispondi al messaggio
Pagina 2 di 2 primaprima 12
Visualizzazione dei risultati da 11 a 16 su 16

Rilevare collisione (C)

  1. #11
    Shoot non  in linea Novello
    Allora praticamente sto usando xpos e ypos per lo spostamento della biglia, per farla muovere in tutte le direzioni. zpos per lo spostamento diagonale, visto che devo spostarla anche diagonalmente. Ho imparato a fare questo, ma non a far interagire tale biglia con gli altri caratteri. Per griglie intendo dire gli array 2D, in questo caso dico griglie per programmi di questo tipo, per esempio campo minato, che a quanto so, si fa creando principalmente una griglia con la variabile x, y e l'array della griglia stessa.

  2. #12
    Le variabili xpos e ypos rappresentano la posizione attuale della biglia. Con la modifica di queste variabili realizzi lo spostamento della biglia.
    La zpos non serve a nulla. La puoi togliere. Lo spostamento diagonale avviene modificando contemporaneamente xpos e ypos.
    Se la griglia l'array, parla di gestione array e non di gestione della griglia, che non esiste.

    Attendo il codice del controllo con la if che ti ho suggerito di inserire. Se un esame, devi pensarci e risolvere perch davanti al professore non ci sar nessuno a suggerirti. Quindi devi comprendere e scrivere il codice di conseguenza.
    ℹ️ Leggi di pi su AntonioG ...

  3. #13
    Shoot non  in linea Novello
    Ecco qua, ho prova e funziona, appena va sulla buca si chiude il programma. Ora devo solo fare varie condizioni su altre buche, fare altre modifiche e ho finito.
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define SIZE 50
    #define bucap '*'
    int main()
    {
        char griglia[SIZE][SIZE];
        int colonna,riga,c1,c2,c3,a, x1, y1, z1;
        int cont=0;
        char biglia, b2;
        srand( (unsigned)time(NULL) );
        for(colonna=0;colonna<SIZE;colonna++)
            for(riga=0;riga<SIZE;riga++)
                griglia[riga][colonna] = '.';
        c1 = 0;
        c2 = 0;
        c3 = 0;
        int xlose=x1;
        int ylose=y1;
        while(c1 < 40)
        {
            colonna = rand() % SIZE;
            riga = rand() % SIZE;
    
            griglia[riga][colonna] = '.';
            c1++;
        }
    
        while(c2 < 20)
        {
            colonna = rand() % SIZE;
            riga = rand() % SIZE;
            b2=griglia[riga][colonna] = '*';
            c2++;
        }
        while(c3 < 1)
        {
            colonna = rand() % SIZE;
            riga = rand() % SIZE;
            griglia[riga][colonna] = '*';
            c3++;
        }
        x1=rand() %50;
        y1=rand() %50;
        z1=rand() %50;
        biglia=griglia[x1][y1] = 'O';
        int xpos = x1;
        int ypos = y1;
        int zpos = z1;
        while (cont<50)
        {
            system("cls||clear");
                for(colonna=0;colonna<SIZE;colonna++)
        {
            for(riga=0;riga<SIZE;riga++)
                printf(" %c ",griglia[riga][colonna]);
            putchar('\n');
        }
            printf("Lancio %d \n", cont);
            printf("1 Sinistra - 2 Destra - 3 Su - 4 Giu' - 5 Giu' a sinistra - 6 Su a sinistra - 7 Giu' a destra - 8 Su a destra \n");
    
            int savex = xpos;
            int savey = ypos;
            int move = 0;
            scanf("%d", &move);
            char c;
    
            switch (move)
            {
            case 1: if (xpos > 0) xpos--; break;
            case 2: if (xpos < 49) xpos++; break;
            case 3: if (ypos > 0) ypos--; break;
            case 4: if (ypos < 49) ypos++; break;
            case 5: zpos=x1; if (zpos > 0) xpos--; ypos++; break;
            case 6: zpos=x1; if (zpos < 49) xpos--; ypos--; break;
            case 7: zpos=x1; if (zpos > 0) xpos++; ypos++; break;
            case 8: zpos=x1; if (zpos < 49) xpos++; ypos--; break;
            }
            if(griglia[xpos][ypos]=='*')
            {
                return 0;
            }
            griglia[savex][savey] = '.';
            griglia[xpos][ypos] = 'O';
            cont++;
        }
        printf("GAME OVER");
        return 0;
    }
    

  4. #14
    Ecco qua, ho prova e funziona
    Di nulla ...

    Come ti dicevo e magari potresti uscire dicendo qualcosa ... come "sei caduto nella buca".

    Comunque, rifletti su quello che ti ho detto di zpos ... non serve a nulla e conterebbe come un errore (anche grave) per il compito ...
    Ultima modifica di AntonioG; 20-10-2020 13:59 
    ℹ️ Leggi di pi su AntonioG ...

  5. #15
    Shoot non  in linea Novello
    Sisi l'ho rimosso e ho cambiato gli if, funziona lo stesso lo spostamento diagonale

  6. #16
    Certo che funziona, ovvio. Ma non hai mostrato il codice modificato quindi te l'ho ricordato.
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio
Pagina 2 di 2 primaprima 12

Potrebbero interessarti anche ...

  1. Risolto: [VB2010] Spostamento e collisione PictureBox
    Da scorpionato nel forum Visual Basic .Net
    Risposte: 14
    Ultimo Post: 17-04-2012, 21:01
  2. Rilevare connessione internet
    Da Nottambulo nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 09-02-2010, 05:27
  3. [VB6] Rilevare suono
    Da dolcissimo nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 16-09-2008, 16:57
  4. Collisione tra immagini
    Da acer1629 nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 12-01-2006, 02:37
  5. Rilevare dati
    Da Lelaccio nel forum Microsoft Word
    Risposte: 10
    Ultimo Post: 02-03-2005, 23:23