Domanda
Sto facendo un tris di gioco (Tic Tac Toe) e nella mia classe di logica Io rappresento lo stato del gioco con una matrice 2D, ma questo è il problema, im controllando la matrice in questo modo
if(gameModel[0][0] == gameModel[1][1] && gameModel[0][0] == gameModel[2][2]){
return true;
}
if(gameModel[2][0] == gameModel[1][1] && gameModel[2][0] == gameModel[0][2]){
return true;
}
e così via per tutti gli 8 condizioni, tuttavia, l'array viene inizializzato con tutti i valori di 0, all'inizio, in modo che trova sempre tre valori corrispondenti, come posso ottenere intorno a questo problema senza dover cambiare tutto il mio codice
grazie
Soluzione
In questo caso è sufficiente aggiungere un controllo se un valore è impostato:
if ( gameModel[0][0] == gameModel[1][1]
&& gameModel[0][0] == gameModel[2][2]
&& gameModel[0][0] != 0) {
return true;
}
Altri suggerimenti
Una cosa che salta fuori a me con questo è ... perché stai usando interi, invece di una classe per rappresentare questo? È vero che questo è un gioco semplice, ma una classe pezzo sembra saltare fuori come una classe abbastanza evidente di avere.
Inoltre, con int davvero hanno 3 stati, presumibilmente qualcosa di simile:
0 = empty
1 = X
2 = Y
Quindi, si dovrebbe verificare la presenza di 0 (vuoto) prima di preoccuparsi di verificare la presenza di se sono lo stesso valore, sarà più veloce (chi se ne frega, però, questo non ha bisogno di essere veloce), e dare un senso più logico ( è il quadrato vuoto? se sì allora non preoccuparsi di verificare se i quadrati tengono gli stessi valori).
Anche per le cose semplici come questo, soprattutto quando si sono appena agli inizi, provare ad abbracciare OOP, è un modo diverso di pensare, e ci vuole pratica, in modo da praticare tanto quanto è possibile!