View Full Version : [C++] gioco Tria
Ciao a tutti !! Ho un problemino con questo semplice programma
Gioco della tria : si ha una tabella 3 x 3 e si vince se si ha tre pedine in fila ( per riga, per colonna o in diagonale.
#include<Math.h>
#include<iostream.h>
#include<stdio.h>
#include <fstream.h>
#include <string.h>
#include <cstdlib>
void inizializza( int tab [3][3] );
void scrivi( int tab [3][3]);
void mossa1( int tab[3][3]);
void mossa2( int tab [3][3]);
bool controllaDUEinfila( int tab[3][3] );
bool pieno ( int tab [3][3]);
bool finitor ( int tab [3][3]);
bool finitoc ( int tab [3][3]);
bool finitod ( int tab [3][3]);
bool finito( int tab [3][3] );
// programma - variabili globali:
int casella [3][3];
int ri1, co1; // mossa giocatore
int ri2, co2; // mossa computer
int chi; // variabile posizionata nei test, dice chi vince
//random
int random() {
int x = rand()%3 ;
return x;
}
// inizializza
void inizializza( int tab [3][3] ) {
for(int ri = 0; ri < 3; ri++)
for(int co = 0; co < 3; co++)
tab[ri][co] = 0;
}
// scrivi
void scrivi( int tab [3][3] ){
cout<<"------------------tabella"<<endl;
for(int i = 0; i < 3; i++) { // tab.length
for(int j = 0; j < 3; j++) // tab[i].length
{ cout<<" "<<tab[i][j]; }
cout<<"\n";
} // for i
cout<<"-----------------------\n"<<endl;
}
// mossa1
void mossa1( int tab[3][3] ){
// mossa del giocatore, inserita da tastiera
bool mossaOk;
do{ // ripeti
scrivi(tab); //scrive tabella
cout<<("inserisci prima indice riga: ");
cin>>ri1;
cout<<("inserisci ora indice colonna: ");
cin>>co1 ;
mossaOk=true;
if( ri1<0 || ri1>2 || co1<0 || co1>2 )
{ cout<<("err in mossa");
mossaOk=false;
}
if ( tab[ri1][co1] != 0 )
{ cout<<("casella occupata\n\n");
mossaOk=false;
}
} while( ! mossaOk );
// ora mossa ok, memorizza questa mossa:
tab[ri1][co1]=1;
}
// mossa computer
void mossa2( int tab [3][3] ){
if ( controllaDUEinfila(tab)) { // due pedine utente in fila
if( tab[0][0]==tab[1][1]&& tab[1][1] ==1 && tab[2][2] ==0 ) {
ri2=2; co2=2; tab[ri2][co2]=2;
}//ifd
else if(tab[1][1]==tab[2][2]&& tab[1][1] ==1 && tab[0][0] ==0 ) {
ri2=0; co2=0; tab[ri2][co2]=2; }
else if( tab[0][2]==tab[1][1]&& tab[1][1] ==1 && tab[2][0] ==0) {
ri2=2; co2=0; tab[ri2][co2]=2; }
else if(tab[1][1]==tab[2][0]&& tab[1][1] ==1 && tab[0][2] ==0) {
ri2=0; co2=2; tab[ri2][co2]=2; }
} //if controlla
if ( controllaDUEinfila(tab)) { } // due pedine PC in fila
do {
ri2= random();
co2=random();
} while ( ( tab[ri2][co2]!= 0 ) );
tab[ri2][co2]=2; // memorizza la scelta computer
}
// finito riga
bool finitor ( int tab [3][3] ){
bool fin1,fin2,fin=false;
for(int r = 0; r < 3; r++) {
fin1 = tab[r][0]==tab[r][1];
fin2 = tab[r][1]==tab[r][2];
if( fin1 && fin2 && ( tab[r][1] !=0)) {
chi = tab[r][1];
return true; // riga piena
} // if
} // for
return false;
}
// pieno
bool pieno ( int tab [3][3] ){
if ( tab[3][3]>14 ){ return true;
}
return false;
}
// finito colonna
bool finitoc ( int tab [3][3] ){
bool fin1,fin2,fin=false;
for(int c = 0; c < 3; c++) {
fin1 = tab[0][c]==tab[1][c];
fin2 = tab[1][c]==tab[2][c];
if( fin1 && fin2 && ( tab[1][c] !=0)) {
chi = tab[1][c];
return true; // colonna piena
} // if
} // for
return fin;
}
// finito diagonale
bool finitod ( int tab [3][3] ){
bool fin1,fin2,fin=false;
fin1 = tab[0][0]==tab[1][1];
fin2 = tab[1][1]==tab[2][2];
if( fin1 && fin2 && ( tab[1][1] !=0) ) {
chi = tab[1][1];
return true; // diagonale piena
} // if
if ( ( tab[0][2]==tab[1][1] ) && ( tab[1][1]==tab[2][0] ) && ( tab[1][1] !=0) ) {
chi = tab[1][1];
return true;
} //if2
return fin ;
}
// CONTROLLO PERICOLO DI TRIA
bool controllaDUEinfila( int tab[3][3] ) {
if( (tab[0][0]==tab[1][1]) || (tab[1][1]==tab[2][2])&& ( tab[1][1] !=0 )) {
return true; // diagonale 1
} // if
if ( ( tab[0][2]==tab[1][1] ) && ( tab[1][1]==tab[2][0] ) && ( tab[1][1] !=0 ) ) {
return true;
} //// diagonale 2
else return false ;
}
// finito
bool finito( int tab [3][3] ){
bool fi, fip,fir,fic,fid;
fip = pieno( tab );
fir = finitor( tab );
fic = finitoc( tab );
fid = finitod( tab );
fi = fip || fir || fic || fid;
return fi;
}
//main del programma
int main( ) {
// crea una matrice di numeri interi 3 x 3;
inizializza( casella );
scrivi( casella );
do {
mossa1(casella);
// aspetta mossa del giocatore
if(finito(casella)) break;
// fai mossa calcolatore cioe' scegli a caso
// una casella libera:
mossa2( casella);
} while( ! finito( casella) );
scrivi( casella );
if( chi == 0 ) cout<<(" pieno, pari \n");
else if( chi == 1 ) cout<<(" HAI VINTO !! \n");
else cout<<(" HO VINTO IO !! \n");
getchar();
getchar();
return 0;
}
Il problema sta in bool controllaDUEinfila( int tab[3][3] );
e successivamente nella mossa del pc ; Per adesso ho cercato di far controllare solo la diagonale, mi spiego: se la io ( utente ) ho due pedine nella diagonale il pc deve occupare la casella ( se non e già occupata ) cosi da impedirmi di fare tria.
Sarà sicuramente un problema stupide però non riesco a venirne a capo :cry:
CiauZ
Barbalbero
04-08-2009, 23:13
e il problema quale sarebbe?
Procedere in questo modo porta ad avere un programma anelastico, e non "intelligente".
se stai cercando un algoritmo per risolvere il gioco del tris, ti conviene dare un'occhiata alla teoria dei giochi, un ramo dell'intelligenza artificiale.
e il problema quale sarebbe?
Procedere in questo modo porta ad avere un programma anelastico, e non "intelligente".
se stai cercando un algoritmo per risolvere il gioco del tris, ti conviene dare un'occhiata alla teoria dei giochi, un ramo dell'intelligenza artificiale.
Lo so ... però "questo "codice mi han dato e questo devo modificare :)
CiauZ
Ora arrivo io e dico l'eresia di turno :fagiano: ... e se provassi a considerare il problema al rovescio? overo in base a dove hai posizionato il pezzo controlli se su quella riga o quella colonna e casomai le diagonali vi è la possibilità di fare il tris, se si il pc la intercetta... se per caso questi tre controlli risultano falsi gli fai mettere il pezzo in maniera randomica...
P.S. no non ho mai toccato l'argomento teoria dei giochi :O.
Fioravante Patrone
05-08-2009, 07:53
se stai cercando un algoritmo per risolvere il gioco del tris, ti conviene dare un'occhiata alla teoria dei giochi, un ramo dell'intelligenza artificiale.
Che possa convenire dare un'occhiata alla TdG convengo. D'altronde, anche senza l'uso formale dell'induzione a ritroso è facile selezionare una strategia vincente. Ma mi pare che non sia questo il problema di chi si sta sbattendo col programma.
Volevo osservare che è riduttivo ritenere la TdG un ramo dell'intelligenza artificiale. Ci sono delle interessanti intersezioni fra TdG e intelligenza artificiale, ma la TdG è anche altro, molto altro: principalmente fornisce un modello chiave per la teoria economica, e in genere per le scienze sociali, ma ci sono anche i giochi evolutivi, e interessanti applicazioni in filosofia, etica e logica. Per non parlare dei "giochi topologici".
Ora arrivo io e dico l'eresia di turno :fagiano: ... e se provassi a considerare il problema al rovescio? overo in base a dove hai posizionato il pezzo controlli se su quella riga o quella colonna e casomai le diagonali vi è la possibilità di fare il tris, se si il pc la intercetta... se per caso questi tre controlli risultano falsi gli fai mettere il pezzo in maniera randomica...
P.S. no non ho mai toccato l'argomento teoria dei giochi :O.
E quello che volevo fare io ! Mi spiego bool controllaDUEinfila( int tab[3][3] )
mi controlla se ci sono due pedine in fila ( indifferentemente se pedina del pc e pedina del giocatore ) !!
E nella void mossa2( int tab [3][3] ){ // ovvero mossa del pc mettevo due if
uno mi controllava se cerano due pedine giocatero in fila ( se vero ) metteva la pedina in modo da bloccare il tris !
il secondo if mi controllava se cerano 2 pedine del pc in fila ( se vero ) metteva la pedina in modo da far tris.
Il problema e che non so dove sto sbagliando ? sarà un problema di codice ... magari una sciocchezza :mad: ...
Se qualche anima pia me lo controlla e mi segnala l'errore o errori gli sarei molto grato :D
CiauZ
malocchio
06-08-2009, 12:55
E quello che volevo fare io ! Mi spiego bool controllaDUEinfila( int tab[3][3] )
mi controlla se ci sono due pedine in fila ( indifferentemente se pedina del pc e pedina del giocatore ) !!
E nella void mossa2( int tab [3][3] ){ // ovvero mossa del pc mettevo due if
uno mi controllava se cerano due pedine giocatero in fila ( se vero ) metteva la pedina in modo da bloccare il tris !
il secondo if mi controllava se cerano 2 pedine del pc in fila ( se vero ) metteva la pedina in modo da far tris.
Il problema e che non so dove sto sbagliando ? sarà un problema di codice ... magari una sciocchezza :mad: ...
Se qualche anima pia me lo controlla e mi segnala l'errore o errori gli sarei molto grato :D
CiauZ
Scusami ma tu parli di errore ma non specifichi gli effetti di questo errore.
Dov'è che il tuo programma fallisce?
Per tutto il resto, c'è Backtracking
Scusami ma tu parli di errore ma non specifichi gli effetti di questo errore.
Dov'è che il tuo programma fallisce?
Per tutto il resto, c'è Backtracking
Mi ero dimenticato di specificare :doh: tnx. Allora il mio programma non riesce a controllare se due pedine sono in fila ovvero se metto due pedine in fila il pc non mi blocca la combinazione per fare tria. Mette rempre a random. :(
CiauZ
malocchio
06-08-2009, 15:55
Mi ero dimenticato di specificare :doh: tnx. Allora il mio programma non riesce a controllare se due pedine sono in fila ovvero se metto due pedine in fila il pc non mi blocca la combinazione per fare tria. Mette sempre a random. :(
CiauZ
Ma 'pedine in fila' vuol dire solo in diagonale (cioè quello per cui è scritto il codice) oppure vuoi dire che non funziona per file non in diagonale e quindi vuoi aggiungere questo tipo di controllo?
Ma 'pedine in fila' vuol dire solo in diagonale (cioè quello per cui è scritto il codice) oppure vuoi dire che non funziona per file non in diagonale e quindi vuoi aggiungere questo tipo di controllo?
Per semplicità ho scritto solo la diagonale ! Poi aggiungerò anche per riche e per colonne !! Cmq no, non funziona per diagonale :(
Ho fatto una piccola modifica alla random !!
int random() {
srand(time(0)) ;
int x = rand()%3 ;
return x;
}
CiauZ
malocchio
06-08-2009, 17:04
bool controllaDUEinfila( int tab[3][3] ) {
if( (tab[0][0]==tab[1][1]) || (tab[1][1]==tab[2][2])&& ( tab[1][1] !=0 )) {
return true; // diagonale 1
} // if
if ( ( tab[0][2]==tab[1][1] ) && ( tab[1][1]==tab[2][0] ) && ( tab[1][1] !=0 ) ) {
return true;
} //// diagonale 2
else return false ;
}Sicuro di quell'AND in rosso?
Inoltre io metterei un paio di parentesi in più, non ricordandomi la precedenza degli operatori booleani :read:
CUT
}Sicuro di quell'AND in rosso?
Inoltre io metterei un paio di parentesi in più, non ricordandomi la precedenza degli operatori booleani :read:
Grazie, ho visto anch'io .
Ci ho smanettato un po e sembra che funzioni ...
void inizializza( int tab [3][3] );
void scrivi( int tab [3][3]);
void mossa1( int tab[3][3]);
void mossa2( int tab [3][3]);
bool controllaDUEinfila( int tab[3][3] );
bool pieno ( int tab [3][3]);
bool finitor ( int tab [3][3]);
bool finitoc ( int tab [3][3]);
bool finitod ( int tab [3][3]);
bool finito( int tab [3][3] );
bool controllaDUEinfila1( int tab[3][3]);
// programma - variabili globali:
int casella [3][3];
int ri1, co1; // mossa giocatore
int ri2, co2; // mossa computer
int chi; // variabile posizionata nei test, dice chi vince
//random
int random() {
srand(time(0)) ;
int x = rand()%3 ;
return x;
}
// inizializza
void inizializza( int tab [3][3] ) {
for(int ri = 0; ri < 3; ri++)
for(int co = 0; co < 3; co++)
tab[ri][co] = 0;
}
// scrivi
void scrivi( int tab [3][3] ){
cout<<"------------------tabella"<<endl;
for(int i = 0; i < 3; i++) { // tab.length
for(int j = 0; j < 3; j++) // tab[i].length
{ cout<<" "<<tab[i][j]; }
cout<<"\n";
} // for i
cout<<"-----------------------\n"<<endl;
}
// mossa1
void mossa1( int tab[3][3] ){
// mossa del giocatore, inserita da tastiera
bool mossaOk;
do{ // ripeti
scrivi(tab); //scrive tabella
cout<<("inserisci prima indice riga: ");
cin>>ri1;
cout<<("inserisci ora indice colonna: ");
cin>>co1 ;
mossaOk=true;
if( ri1<0 || ri1>2 || co1<0 || co1>2 )
{ cout<<("err in mossa");
mossaOk=false;
}
if ( tab[ri1][co1] != 0 )
{ cout<<("casella occupata\n\n");
mossaOk=false;
}
} while( ! mossaOk );
// ora mossa ok, memorizza questa mossa:
tab[ri1][co1]=1;
}
// mossa2
void mossa2( int tab [3][3] ){
if ( controllaDUEinfila(tab)==true) {
if ( (tab[0][0]==tab[0][1] && tab[0][1] ==1) && tab[0][2] ==0 ){
ri2=0; co2=2;
}//ifr1a
else if ( (tab[1][0]==tab[1][1] && tab[1][1] ==1) && tab[1][2] ==0 ){
ri2=1; co2=2;
}//ifr1b
else if ( (tab[2][0]==tab[2][1] && tab[2][1] ==1) && tab[2][2] ==0 ){
ri2=2; co2=2;
}//ifr1c
else if ( (tab[0][1]==tab[0][2] && tab[0][1] ==1) && tab[0][2] ==0 ) {
ri2=0; co2=0;
}//ifr2a
else if ( (tab[1][1]==tab[1][2] && tab[1][1] ==1) && tab[1][2] ==0 ) {
ri2=1; co2=0;
}//ifr2b
else if ( (tab[2][1]==tab[2][2] && tab[2][1] ==1) && tab[2][2] ==0 ) {
ri2=2; co2=0;
}//ifr2c
else if ( (tab[0][0]==tab[1][0]&& tab[1][0] ==1) && tab[2][0] ==0) {
ri2=2; co2=0;
}//ifc1a
else if ( (tab[0][1]==tab[1][1]&& tab[1][1] ==1) && tab[2][1] ==0) {
ri2=2; co2=1;
}//ifc1b
else if ( (tab[0][2]==tab[1][2]&& tab[1][2] ==1) && tab[2][2] ==0) {
ri2=2; co2=2;
}//ifc1c
else if ( (tab[1][0]==tab[2][0]&& tab[1][0] ==1) && tab[0][0] ==0) {
ri2=0; co2=0;
} //ifc2a
else if ( (tab[1][1]==tab[2][1]&& tab[1][1] ==1) && tab[0][1] ==0) {
ri2=0; co2=1;
} //ifc2b
else if ( (tab[1][2]==tab[2][2]&& tab[1][2] ==1) && tab[0][2] ==0) {
ri2=0; co2=2;
} //ifc2c
else if( (tab[0][0]==tab[1][1]&& tab[1][1] ==1) && tab[2][2] ==0 ) {
ri2=2; co2=2;
}//ifd1
else if((tab[1][1]==tab[2][2]&& tab[1][1] ==1) && tab[0][0] ==0 ) {
ri2=0; co2=0; }//ifd2
else if( (tab[0][2]==tab[1][1]&& tab[1][1] ==1) && tab[2][0] ==0) {
ri2=2; co2=0; }//ifd3
else if((tab[1][1]==tab[2][0]&& tab[1][1] ==1) && tab[0][2] ==0) {
ri2=0; co2=2; }//ifd4
} //if controlla
if ( controllaDUEinfila1(tab)==true) { //controlla mie pedine
if ( (tab[0][0]==tab[0][1] && tab[0][1] ==2) && tab[0][2] ==0 ){
ri2=0; co2=2;
}//ifr1a
else if ( (tab[1][0]==tab[1][1] && tab[1][1] ==2) && tab[1][2] ==0 ){
ri2=1; co2=2;
}//ifr1b
else if ( (tab[2][0]==tab[2][1] && tab[2][1] ==2) && tab[2][2] ==0 ){
ri2=2; co2=2;
}//ifr1c
else if ( (tab[0][1]==tab[0][2] && tab[0][1] ==2) && tab[0][2] ==0 ) {
ri2=0; co2=0;
}//ifr2a
else if ( (tab[1][1]==tab[1][2] && tab[1][1] ==2) && tab[1][2] ==0 ) {
ri2=1; co2=0;
}//ifr2b
else if ( (tab[2][1]==tab[2][2] && tab[2][1] ==2) && tab[2][2] ==0 ) {
ri2=2; co2=0;
}//ifr2c
else if ( (tab[0][0]==tab[1][0]&& tab[1][0] ==2) && tab[2][0] ==0) {
ri2=2; co2=0;
}//ifc1a
else if ( (tab[0][1]==tab[1][1]&& tab[1][1] ==2) && tab[2][1] ==0) {
ri2=2; co2=1;
}//ifc1b
else if ( (tab[0][2]==tab[1][2]&& tab[1][2] ==2) && tab[2][2] ==0) {
ri2=2; co2=2;
}//ifc1c
else if ( (tab[1][0]==tab[2][0]&& tab[1][0] ==2) && tab[0][0] ==0) {
ri2=0; co2=0;
} //ifc2a
else if ( (tab[1][1]==tab[2][1]&& tab[1][1] ==2) && tab[0][1] ==0) {
ri2=0; co2=1;
} //ifc2b
else if ( (tab[1][2]==tab[2][2]&& tab[1][2] ==2) && tab[0][2] ==0) {
ri2=0; co2=2;
} //ifc2c
else if( (tab[0][0]==tab[1][1]&& tab[1][1] ==2) && tab[2][2] ==0 ) {
ri2=2; co2=2;
}//ifd1
else if(tab[1][1]==tab[2][2]&& tab[1][1] ==2 && tab[0][0] ==0 ) {
ri2=0; co2=0; }//ifd2
else if( tab[0][2]==tab[1][1]&& tab[1][1] ==2 && tab[2][0] ==0) {
ri2=2; co2=0; }//ifd3
else if(tab[1][1]==tab[2][0]&& tab[1][1] ==2 && tab[0][2] ==0) {
ri2=0; co2=2; }//ifd4
}
while ( ( tab[ri2][co2]!= 0 ) ) {
ri2= random();
co2=random();
}
tab[ri2][co2]=2; // memorizza la scelta computer
}
// finito riga
bool finitor ( int tab [3][3] ){
bool fin1,fin2,fin=false;
for(int r = 0; r < 3; r++) {
fin1 = tab[r][0]==tab[r][1];
fin2 = tab[r][1]==tab[r][2];
if( fin1 && fin2 && ( tab[r][1] !=0)) {
chi = tab[r][1];
return true; // riga piena
} // if
} // for
return false;
}
// pieno
bool pieno ( int tab [3][3] ){
if ( tab[3][3]>14 ){ return true;
}
return false;
}
// finito colonna
bool finitoc ( int tab [3][3] ){
bool fin1,fin2,fin=false;
for(int c = 0; c < 3; c++) {
fin1 = tab[0][c]==tab[1][c];
fin2 = tab[1][c]==tab[2][c];
if( fin1 && fin2 && ( tab[1][c] !=0)) {
chi = tab[1][c];
return true; // colonna piena
} // if
} // for
return fin;
}
// finito diagonale
bool finitod ( int tab [3][3] ){
bool fin1,fin2,fin=false;
fin1 = tab[0][0]==tab[1][1];
fin2 = tab[1][1]==tab[2][2];
if( fin1 && fin2 && ( tab[1][1] !=0) ) {
chi = tab[1][1];
return true; // diagonale piena
} // if
if ( ( tab[0][2]==tab[1][1] ) && ( tab[1][1]==tab[2][0] ) && ( tab[1][1] !=0) ) {
chi = tab[1][1];
return true;
} //if2
return fin ;
}
// CONTROLLO PERICOLO DI TRIA
bool controllaDUEinfila( int tab[3][3] ) {
if( ((tab[0][0]==tab[0][1]) || (tab[0][1]==tab[0][2])) && ( tab[0][1] !=0 ) ) {
return true; // riga
} // if
if(((tab[1][0]==tab[1][1]) || (tab[1][1]==tab[1][2])) && ( tab[1][1] !=0 ) ) {
return true; // riga
} // if
if(((tab[2][0]==tab[2][1]) || (tab[2][1]==tab[2][2])) && ( tab[2][1] !=0 ) ) {
return true; // riga
} // if
if( ((tab[0][0]==tab[1][0]) || (tab[1][0]==tab[2][0])) && ( tab[1][0] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][1]==tab[1][1]) || (tab[1][1]==tab[2][1])) && ( tab[1][1] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][2]==tab[1][2]) || (tab[1][2]==tab[2][2])) && ( tab[1][2] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][0]==tab[1][1]) || (tab[1][1]==tab[2][2])) && ( tab[1][1] !=0 )) {
return true; // diagonale 1
} // if
if ( (( tab[0][2]==tab[1][1] ) || ( tab[1][1]==tab[2][0] )) && ( tab[1][1] !=0 ) ) {
return true;
} //// diagonale 2
else return false ;
}
bool controllaDUEinfila1( int tab[3][3] ) {
if( ((tab[0][0]==tab[0][1]) || (tab[0][1]==tab[0][2])) && ( tab[0][1] !=0 ) ) {
return true; // riga
} // if
if(((tab[1][0]==tab[1][1]) || (tab[1][1]==tab[1][2])) && ( tab[1][1] !=0 ) ) {
return true; // riga
} // if
if(((tab[2][0]==tab[2][1]) || (tab[2][1]==tab[2][2])) && ( tab[2][1] !=0 ) ) {
return true; // riga
} // if
if( ((tab[0][0]==tab[1][0]) || (tab[1][0]==tab[2][0])) && ( tab[1][0] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][1]==tab[1][1]) || (tab[1][1]==tab[2][1])) && ( tab[1][1] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][2]==tab[1][2]) || (tab[1][2]==tab[2][2])) && ( tab[1][2] !=0 ) ) {
return true; //colonna
} // if
if( ((tab[0][0]==tab[1][1]) || (tab[1][1]==tab[2][2])) && ( tab[1][1] !=0 )) {
return true; // diagonale 1
} // if
if ( (( tab[0][2]==tab[1][1] ) || ( tab[1][1]==tab[2][0] )) && ( tab[1][1] !=0 ) ) {
return true;
} //// diagonale 2
else return false ;
}
// finito
bool finito( int tab [3][3] ){
bool fi, fip,fir,fic,fid;
fip = pieno( tab );
fir = finitor( tab );
fic = finitoc( tab );
fid = finitod( tab );
fi = fip || fir || fic || fid;
return fi;
}
//main del programma
int main( ) {
// crea una matrice di numeri interi 3 x 3;
inizializza( casella );
scrivi( casella );
do {
mossa1(casella);
// aspetta mossa del giocatore
if(finito(casella)) break;
// fai mossa calcolatore cioe' scegli a caso
// una casella libera:
mossa2( casella);
} while( ! finito( casella) );
scrivi( casella );
if( chi == 0 ) cout<<(" pieno, pari \n");
else if( chi == 1 ) cout<<(" HAI VINTO !! \n");
else cout<<(" HO VINTO IO !! \n");
getchar();
getchar();
return 0;
}
Ho una domanda per tabella piena io ho fatto cosi :
bool pieno ( int tab [3][3] ){
if ( tab[3][3]>14 ){ return true;
}
return false;
}
Cioe ho messo un numero a caso... la tab[3][3] e piena quando e maggiore di ???
CiauZ
up
[/CODE]
Ho una domanda per tabella piena io ho fatto cosi :
bool pieno ( int tab [3][3] ){
if ( tab[3][3]>14 ){ return true;
}
return false;
}
Cioe ho messo un numero a caso... la tab[3][3] e piena quando e maggiore di ???
CiauZ
Fatto da solo :D era una sciocchezza:)
bool pieno ( int tab [3][3] ){
for(int r = 0; r < 3; r++) {
if ( tab[r][1] ==0 ){ return false;
}
else if ( tab[r][2] ==0 ){ return false;
}
else if ( tab[r][3] ==0 ){ return false;
} }
return true;
}
Bye
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.