+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 40

Discussione: Problema riguardo una condizione in caso di vittoria ad inizio partita

  1. #1
    Shoot non  in linea Novello
    Post
    47

    Problema riguardo una condizione in caso di vittoria ad inizio partita

    Salve a tutti. Ho un problema con un programma che ho fatto in precedenza. Si tratta del gioco delle biglie. Il programma funziona molto bene, ma c' un problema. Non riesco a mettere la condizione di vittoria quando la biglia becca al primo tentativo e al primo lancio la buca vincente. Questo il codice:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define SIZE 50
    int main()
    {
        char griglia[SIZE][SIZE];
        int colonna,riga,c1,c2,c3,a, x1, y1, b, scelta, rn1,rn2;
        int cont=1;
        char biglia, b1, b2, b3;
        srand( (unsigned)time(NULL) );
        for(colonna=0;colonna<SIZE;colonna++)
            for(riga=0;riga<SIZE;riga++)
                b=griglia[riga][colonna] = '.';
        c1 = 0;
        c2 = 0;
        c3 = 0;
        int xlose=x1;
        int ylose=y1;
        while(c1 < 40)
        {
            colonna = rand() % SIZE;
            riga = rand() % SIZE;
    
            b1=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;
            b3=griglia[riga][colonna] = '*';
            c3++;
        }
        x1=rand() %50;
        y1=rand() %50;
        biglia=griglia[x1][y1] = 'O';
        biglia!=b3;
        int xpos = x1;
        int ypos = y1;
        printf("************************* \n");
        printf("* IL GIOCO DELLE BIGLIE * \n");
        printf("************************* \n");
        do{
        printf("Seleziona le opzioni disponibili: \n");
        printf("1)Gioca \n2)Crediti \n");
        scanf("%d",&scelta);
        switch(scelta)
        {
            case 1:system("cls");
            while (cont<51)
        {
            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);
    
            switch (move)
            {
            case 1: if (xpos > -1) xpos--; break;
            case 2: if (xpos < 50) xpos++; break;
            case 3: if (ypos > -1) ypos--; break;
            case 4: if (ypos < 50) ypos++; break;
            case 5: if (ypos < 50 && xpos > -1) xpos--; ypos++; break;
            case 6: if (ypos > -1 && xpos > -1) xpos--; ypos--; break;
            case 7: if (ypos < 50 && xpos < 50) xpos++; ypos++; break;
            case 8: if (ypos > -1 && xpos <50) xpos++; ypos--; break;
            default: cont--;
            }
            if(griglia[xpos][ypos]==b2)
            {
                printf("Hai perso");
                return 0;
            }
            if(griglia[xpos][ypos]==b1)
            {
                xpos=rand() %50;
                ypos=rand() %50;
            }
            if(griglia[xpos][ypos]==b3)
            {
                printf("Hai vinto!");
                return 0;
            }
    
            if(xpos==3||ypos==3)
            {
                rn1=1+rand()%1;
                rn2=1+rand()%3;
                xpos=xpos-rn1;
                ypos=ypos-rn2;
            }
            if(xpos==-1||ypos==-1)
            {
                rn1=1+rand()%1;
                rn2=1+rand()%3;
                xpos=xpos+rn1;
                ypos=ypos+rn2;
            }
            griglia[savex][savey] = '-';
            griglia[xpos][ypos] = 'O';
            cont++;
            if(cont==1)
            {
                griglia[xpos][ypos]!=b3;
            }
    
    
        }
        printf("Hai finito il numero di lanci. Game Over \n"); return 0;
            case 2:system("cls"); printf("Gioco creato da Pasquale Marzocchi, studente di informatica dell'Universita' Parthenope \n"); break;
        }
        printf("Premi un tasto qualunque per tornare al menu, premi 9 se invece vuoi uscire dal gioco' \n");
        scanf("%d",&scelta);
        }while(scelta!=9);
    }
    Ho provato a mettere una condizione di vittoria al primo lancio nel terzo if, ma non cambia nulla. Dovrebbe uscire scritto "Hai vinto. Il tuo punteggio 50".

  2. #2
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    17,051
    Blogs
    5
    Parli di questa linea?

    if(griglia[xpos][ypos]==b3)

    E quanto vale b3? Quando imposti il suo valore?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Shoot non  in linea Novello
    Post
    47
    b3 la buca vincente, imposto il suo valore molto prima

  4. #4
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    17,051
    Blogs
    5
    S ma dove prima? E che valore?
    Ultima modifica di AntonioG; 14-11-2020 18:24 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    Shoot non  in linea Novello
    Post
    47
    qua:
    while(c3 < 1)
    {
    colonna = rand() % SIZE;
    riga = rand() % SIZE;
    b3=griglia[riga][colonna] = '*';
    c3++;
    }

  6. #6
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    17,051
    Blogs
    5
    Se intendi questa

    b3=griglia[riga][colonna] = '*';

    ti faccio notare che quella riga ha un significato diverso da quello che pensi tu.

    Cosa pensi che faccia?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  7. #7
    Shoot non  in linea Novello
    Post
    47
    E' la buca vincente. Se la biglia becca quella buca, il gioco finisce e si vince.

  8. #8
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    17,051
    Blogs
    5
    Ma hai letto quello che ti ho detto e chiesto?

    Quella riga cosa assegna a b3? Hai controllato il valore di b3?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  9. #9
    Shoot non  in linea Novello
    Post
    47
    Si. Non capisco che cosa intendi dire.

  10. #10
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    17,051
    Blogs
    5
    S, vuoi dire che sai quanto vale b3? E quanto vale?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi