Hur man skriver en Tic-Tac-Toe Program i Java (6 / 10 steg)
Steg 6: Kontrollera om en vinnare (del 1)
Det finns tre olika funktioner till check för en vinst: rader, kolumner och diagonaler. Datorer måste skilja dessa till olika villkor eftersom de är alla olika i form av matriser. checkForWin() kommer att vara vår huvuduppgift att testa alla 3 av dessa funktioner för varje scenario som användardata har påverkat.
För checkForWin() metod: du behöver bara en retursatsen som uppmanar de tre olika funktionerna. Om kontrollera raderna för win inte returnerar sant så kolla kolumnerna för win, etc. Insidan av programsatsen return ska se ut: checkRowsForWin() || checkColumnsForWin() || checkDiagonalsForWin()
För checkRowsForWin() metod: vi looping genom raderna att se om det finns någon vinnare. Detta kommer att kräva en for-loop med en om uttalande av den. Den för loop kommer att öka genom heltal i syfte att kontrollera varje rad. för (int jag = 0; jag < 3; i ++) den om uttalande jämförs varje utrymme i raden till varandra och värdet "true" om de är alla lika. Till exempel skulle om raden hade tre kryssen i rad, metoden som returnera sant. om (checkRowCol (styrelsen [i] [0], styrelsen [i] [1], board[i][2]) == true) i så fall i detta om uttalande, bör det finnas a: return true; Och efter det for-loop, om metoden slutade aldrig, sedan metoden måste returnera att raden inte hade tre på varandra följande matchande symboler. Därför, precis innan stängning av metoden med sin final "}", skriver vi: returnera false; Tillfredsställa behovet av att returnera ett booleskt värde.
För checkColumnsForWin() metod: kopiera och klistra in innehållet i metoden checkRowsForWin(). Den enda förändringen kommer att vara inne i if uttalande. I stället för uppräkning genom raderna, kommer vi öka bland kolumnerna. Så även i checkRowsForWin har en if uttalande som säger: om (checkRowCol (styrelsen [i] [0], styrelsen [i] [1], board[i][2]) == true) checkColumnsForWin() kommer att ha en om uttalande som säger: om (checkRowCol (styrelsen [0] [i], styrelsen [1] [i], board[2][i]) == true) annat än att allt annat i metoden är densamma.
För checkDiagonalsForWin() metod: allt som skrivs kan finnas innanför parenteserna med ett return() uttalande. Den första kontrollen utför vi är på diagonalen från det övre vänstra hörnet till det nedre högra hörnet. Därefter kan kontrollera vi alla utrymmen som skulle ingå i det här avsnittet. checkRowCol (styrelsen [0] [0], styrelsen [1] [1], board[2][2]) == true) då får vi en mer uttalande, men vi kommer att skilja två av en OR symbol: "||" Den andra satsen kommer att kontrollera från det övre högra hörnet till det nedre vänstra hörnet. checkRowCol (styrelsen [0] [2], styrelsen [1] [1], board[2][0]) == true) så din slutprodukt för metoden checkDiagonalsForWin() bör vara en return(), och inuti det bör innehålla den första satsen eller det andra uttrycket.