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

È stato utile?

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top