arrays - Java Tic Tac Toe Game Confirming Winner -
below code tic tac toe game. there 2 problems running into. one, not sure how return player has won (x or o), can return if there winner. well, when try run program can out of bounds error. did go wrong?
i have 2 files, 1 being tictactoe , other tttboard.
tictaetoe.java
import java.util.scanner; import java.util.random; public class tictactoe { public static void main(string[]args){ scanner reader = new scanner(system.in); tttboard board = new tttboard(); system.out.println(board); random gen = new random(); char player; if(gen.nextint(2)==1) player = 'o'; else player = 'x'; while(!board.checkwinner() && !board.full()){ system.out.println(player + " 's turn"); system.out.println("enter row , column [1-3, space, 1-3]: "); int row = reader.nextint(); int column = reader.nextint(); boolean success = board.placexor0(player, row, column); if(!success) system.out.println("error: cell occupied!"); else{ system.out.println(board); if(player == 'x') player = 'o'; else player = 'x'; } } } } tttboard.java
public class tttboard{ private char[][] board; public tttboard(){ board = new char[3][3]; reset(); } public void reset(){ for(int row = 0; row < 3; row++) for(int column = 0; column < 3; column++) board[row][column] = '-'; } public string tostring(){ string result = "\n"; for(int row = 0; row <3; row++){ (int column = 0; column < 3; column++) result += board[row][column] + " "; result +="\n"; } return result; } public boolean placexor0(char player, int row, int column){ if(board[row -1][column -1]=='-'){ board[row-1][column-1]= player; return true; } else return false; } public boolean checkwinner(){ return(checkrowsforwin()||checkcolumnsforwin()||checkdiagnalsforwin()); } public boolean full(){ boolean full = true; for(int row = 0; row < 3; row++){ for(int column = 0; column < 3; column++){ if(board[row][column] == '-'){ full = false; } } } return full; } public boolean checkrowsforwin(){ for(int row = 0; row < 3; row++){ if(placexor0(board[row][0], board[row][1], board[row][2]) == true){ return true; } } return false; } public boolean checkcolumnsforwin(){ for(int column = 0; column < 3; column++){ if(placexor0(board[0][column], board[1][column], board[2][column]) == true){ return true; } } return false; } public boolean checkdiagnalsforwin(){ return((placexor0(board[0][0], board[1][1], board[2][2]) == true) || (placexor0(board[0][2], board[1][1], board[2][0]) == true)); } } new code:
public class tttboard{ private char[][] board; public tttboard(){ board = new char[3][3]; reset(); } public void reset(){ for(int row = 0; row < 3; row++) for(int column = 0; column < 3; column++) board[row][column] = '-'; } public string tostring(){ string result = "\n"; for(int row = 0; row <3; row++){ (int column = 0; column < 3; column++) result += board[row][column] + " "; result +="\n"; } return result; } public boolean placexor0(char player, int row, int column){ if(board[row -1][column -1]=='-'){ board[row-1][column-1]= player; return true; } else return false; } public boolean checkwinner(){ return(checkrowsforwin()||checkcolumnsforwin()||checkdiagnalsforwin()); } /*public string getwinner(){ for(int row = 0; row <3; row++){ (int column = 0; column < 3; column++) } }*/ public boolean full(){ boolean full = true; for(int row = 0; row < 3; row++){ for(int column = 0; column < 3; column++){ if(board[row][column] == '-'){ full = false; } } } return full; } public boolean checkrowsforwin(){ for(int row = 0; row < 3; row++){ if(board[row][0]== board[row][1]&& board[row][0]== board[row][2]){ return true; } } return false; } public boolean checkcolumnsforwin(){ for(int column = 0; column < 3; column++){ if (board[0][column] == board[1][column] && board[0][column] == board[2][column]) { return true; } } return false; } public boolean checkdiagnalsforwin(){ return((board[0][0]== board[1][1]&& board[0][0] == board[2][2]) || (board[0][2] == board[1][1] && board[0][2]== board[2][0])); } }
in checkrowsforwin, have lines of code:
if(placexor0(board[0][column], board[1][column], board[2][column]) == true) { return true; } you want replace with:
if (board[0][column] == board[1][column] && board[0][column] == board[2][column]) { return true; } and similar thing checkcolumnsforwin , checkdiagnalsforwin
Comments
Post a Comment