03/12/11 17:12
Driverfury
Ciao a tutti, per esercitarmi sul linguaggio C sto creando il gioco del tris. La griglia dove andranno i simboli (in realtà invece di "X" e "O" ho usato 1 e 2) è una matrice di numeri interi (ecco perchè ho utilizzato 1 e 2) 3x3. Se una cella della griglia non è stata settata a 1 o 2, il suo valore è 0. Ho sviluppato una rudimentale funzione che ritorna 1 se è stato fatto un tris e ritorna 0 in caso contrario.
Ecco la funzione:
La mia domanda è questa: c'è un metodo più veloce ed ottimizzato per controllare se è stato fatto il tris?
Avevo pensato ad una funzione ricorsiva, però non so da dove partire e come strutturarla. Chiedo aiuto.
Ecco la funzione:
int controlTris(int table[3][3]) { if(table[0][0]==table[0][1] && table[0][0]==table[0][2] && table[0][0]>0 && table[0][1]>0 && table[0][2]>0) return 1; else if(table[1][0]==table[1][1] && table[1][0]==table[1][2] && table[1][0]>0 && table[1][1]>0 && table[1][2]>0) return 1; else if(table[2][0]==table[2][1] && table[2][0]==table[2][2] && table[2][0]>0 && table[2][1]>0 && table[2][2]>0) return 1; else if(table[0][0]==table[1][0] && table[0][0]==table[2][0] && table[0][0]>0 && table[1][0]>0 && table[2][0]>0) return 1; else if(table[0][1]==table[1][1] && table[0][1]==table[2][1] && table[0][1]>0 && table[1][1]>0 && table[2][1]>0) return 1; else if(table[0][2]==table[1][2] && table[0][2]==table[2][2] && table[0][2]>0 && table[1][2]>0 && table[2][2]>0) return 1; else if(table[0][0]==table[1][1] && table[0][0]==table[2][2] && table[0][0]>0 && table[1][1]>0 && table[2][2]>0) return 1; else if(table[0][2]==table[1][1] && table[0][2]==table[2][0] && table[0][2]>0 && table[1][1]>0 && table[2][0]>0) return 1; else return 0; }
La mia domanda è questa: c'è un metodo più veloce ed ottimizzato per controllare se è stato fatto il tris?
Avevo pensato ad una funzione ricorsiva, però non so da dove partire e come strutturarla. Chiedo aiuto.
aaa