Stap 6: Controleren op een winnaar (deel 1)
Er zijn drie verschillende functies om te controleren voor een overwinning: rijen, kolommen en diagonalen. Computers hebben om te scheiden deze in verschillende omstandigheden omdat ze allemaal verschillend in termen van matrices zijn. checkForWin() zullen onze belangrijkste functie om te testen alle 3 van deze functies voor elk scenario dat de input van de gebruiker heeft beïnvloed.
Voor de checkForWin() methode: U hoeft enkel een instructie return, dat doet een beroep op de drie verschillende functies. Als de rijen voor win controleren niet terugkrijgt controleert waar de kolommen voor win, enz. Binnenkant van de instructie return moet eruit: checkRowsForWin() || checkColumnsForWin() || checkDiagonalsForWin()
Voor de checkRowsForWin() methode: We zijn een lus doorlopen van de rijen om te zien of er winnaars. Dit vergt een for-lus met een indien verklaring binnenkant van het. De voor lus zal verhoogd worden door integer ik om te controleren van elke rij. voor (int i = 0; ik < 3; i ++) de als verklaring van elke ruimte in de rij met elkaar vergelijkt en de waarde 'true' geeft als ze allemaal gelijk zijn. Bijvoorbeeld zou als de rij had drie x in een rij, de methode terugkeren waar. Als (checkRowCol (plaat [i] [0], bestuur [i] [1], board[i][2]) == true) Ja, binnenkant van deze instelling als verklaring, moet er a: return true; En na de for-lus, als de methode nooit gestopt, moet de methode moet opleveren dat deze rij niet over drie opeenvolgende gelijke symbolen. Daarom, vlak voor sluitingstijd uit de methode met de finale '}', we zullen schrijven: return false; Voldoen aan de behoefte om terug te keren een Boolean-waarde.
Voor de checkColumnsForWin() methode: kopiëren en plakken van de inhoud van de checkRowsForWin()-methode. De enige verandering zullen binnenkant van de als verklaring. In plaats van verhogen door de rijen, zullen we worden verhoogd door de kolommen. Zo terwijl in checkRowsForWin heeft een if verklaring die zegt: als (checkRowCol (plaat [i] [0], bestuur [i] [1], board[i][2]) == true) checkColumnsForWin() zal hebben een if verklaring die zegt: als (checkRowCol (plaat [0], [i], bestuur [1], [i], board[2][i]) == true) anders dan dat, alles in de methode blijft hetzelfde.
Voor de methode van de checkDiagonalsForWin(): alles wat geschreven kan worden opgenomen, tussen de haakjes van de verklaring van een return(). De eerste controle die we zullen voeren is op de diagonaal vanaf de linkerbovenhoek naar de rechterbenedenhoek. Om dit te doen, controleren wij alle ruimten die zou worden opgenomen in deze sectie. checkRowCol (plaat [0] [0], bestuur [1] [1], board[2][2]) == true) dan zal er één meer instructie, maar we zullen het scheiden van de twee door een OR-symbool: ' ||' De tweede instructie zal controleren van de rechterbovenhoek naar de linkerbenedenhoek. checkRowCol (plaat [0] [2], bestuur [1] [1], board[2][0]) == true) zodat uw eindproduct van de checkDiagonalsForWin()-methode een return() moet, en binnen het de eerste instructie moet bevatten of de tweede instructie.