Anteprima
Vedrai una selezione di 3 pagine su 8
Codice Forza 4 Pag. 1 Codice Forza 4 Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
Codice Forza 4 Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Turno di gioco

Mossa numero:

E' il turno di ()

Tabella di gioco:


windowsstampaTitolo();
stampa(m);
switch(f){
    //stampa chi ha vinto la partita
    case 1:
        printf("\n\nHa vinto %s (%c)", n1, g1);
        break;
    case 2:
        printf("\n\nHa vinto %s (%c)", n2, g2);
        break;
    case 3:
        printf("\n\nPareggio");
        break;
}


int mossaPC(int m[R][C], int gp, int ga){
    int r,c,m2[R][C],cas,g,i;
    //Riempio la matrice di supporto
    for(r=0; r<R ;r++)
        for(c=0; c<C; c++)
            m2[r][c]=m[r][c];
    printf("mossaPC ( m, %d, %d )",gp,ga);
    // 1° ciclo Controlla se può vincere
    // 2° ciclo controlla se l'avversario può vincere
    for(i=0; i<2; i++){
        if (i){
            g=ga;
        }else {
            g=gp;
        }
        for(c=0;c<C;c++){
            r=inserisci(m2,c);
            m2[r][c]=g;
            printf("\n c=%d r=%d controllaF( m, %d, %d, %d, 0)=%d", c,r,g,r,c,controllaF(m2, g, r, c, 0));
            if(r!=-1 && controllaF(m2, g, r, c, 0))
                return c;
            m2[r][c]=vuotoI;
        }
    }
    while(1){
        //Controlla se nella colonna casuale c'è spazio
        if(inserisci(m2,cas=rand()%C)!=-1)
            return cas;
    }
}


int giocatoreP(int g){
    if

(g==g1I)g=g2I;elseg=g1I;return g;
}

int inserisci(int m[R][C], int c){
    int i;
    for(i=R-1; i>=0; i--){
        if(m[i][c]==vuotoI)
            return i;
    }
    return -1;
}

int controllaF(int m[R][C], const int g, const int r, const int c, const int e){
    int r2, c2, x, ret=0, i, ok;
    
    //Controllo diagonale \
    if(esiste(r-1,c-1) && m[r-1][c-1]==g)
        if(x=controllaF(m,g,r-1,c-1,e)!=0)
            ret=ret||x;
    
    if(r<R-(NGV-1) && c<C-(NGV-1)){
        ok=1;
        for(i=0; i<NGV && (ok*=(m[r][c]==m[r+i][c+i] || m[r+i][c+i]==vI)); i++) ;
        if(ok){
            if(e)
                for(i=0; esiste(r+i, c+i) && m[r+i][c+i]==g; i++)
                    m[r+i][c+i]=vI;
            ret=1;
        }
    }
    
    //Controllo diagonale /
    if(esiste(r+1,c-1) && m[r+1][c-1]==g)
        if(x=controllaF(m,g,r+1,c-1,e)!=0)
            ret=ret||x;
    
    if(r>(NGV-2) && c<C-(NGV-2)){
        ok=1;
        for(i=0; i<NGV && (ok*=(m[r][c]==m[r-i][c+i]) || m[r-i][c+i]==vI); i++) ;
        if(ok){
            if(e)
                for(i=0; esiste(r-i, c+i) && m[r-i][c+i]==g; i++)
                    m[r-i][c+i]=vI;
            ret=1;
        }
    }
    
    //Controllo riga
    if(esiste(r,c-1) &&
m[r][c-1]==g)if(x=controllaF(m,g,r,c-1,e)!=0)ret=ret||x;if(c<C-(NGV-1)){ok=1;for(i=0; i<NGV && (ok*=(m[r][c]==m[r][c+i] || m[r][c+i]==vI)); i++) ;if(ok){if(e)for(i=0; esiste(r, c+i) && m[r][c+i]==g; i++)m[r][c+i]=vI;ret=1;}} //Controllo colonnaif(r<R-(NGV-1)){ok=1;for(i=0; i<NGV && (ok*=(m[r][c]==m[r+i][c] || m[r+i][c]==vI)); i++) ;if(ok){if(e)for(i=0; i<NGV; i++) //Non serve controllare se sono più di 4m[r+i][c]=vI;ret=1; }}return ret;}int esiste(int r, int c){if(r>=0&&r<R && c>=0&&c<C)return 1;return 0;}
Dettagli
Publisher
A.A. 2020-2021
8 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher vincenzo9618 di informazioni apprese con la frequenza delle lezioni di Programmazione I e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Giunta Giulio.