Anteprima
Vedrai una selezione di 3 pagine su 8
Disdici quando
vuoi
vuoi
Acquista con carta
o PayPal
o PayPal
Scarica i documenti
tutte le volte che vuoi
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
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.