tic tac toe - tic tac toe game java -
i novice java student, assigned tic tac toe game. when try compile , run program, following error:
run: exception in thread "main" java.lang.nullpointerexception @ tictactoegame.tictactoegame.displayboard(tictactoegame.java:55) @ tictactoegame.tictactoegame.main(tictactoegame.java:23) java result: 1 build successful (total time: 0 seconds)
i warning in createboard method says "local variable hides field"
below code project far. of code provided me school, , suppose initialize array in createboard method , determine winner in winortie method. have ideas how run? doing wrong in initization of array? thank can me out this.
package tictactoegame; import static tictactoegame.tictactoegame.gameboard; public class tictactoegame { static int[][] gameboard; static final int empty = 0; static final int nought = -1; //this 'o' static final int cross = 1; //this 'x' public static void main(string[] args) { createboard(3,3); int turn =0; int playerval; int outcome; java.util.scanner scan = new java.util.scanner(system.in); { displayboard(); playerval = (turn % 2 == 0)? nought : cross; if (playerval == nought) system.out.println("\n--o's turn--"); else system.out.println("\n--x's turn--"); system.out.print("enter row , column"); try { set(playerval, scan.nextint(), scan.nextint()); } catch (exception ex) {system.err.println(ex);} turn++; outcome = winortie(); } while (outcome == -2); displayboard(); switch (outcome){ case nought: system.out.println("o wins!"); break; case cross: system.out.println("x wins!"); break; case 0: system.out.println("tie."); break; } } static void set(int val, int row, int col) throws illegalargumentexception { if (gameboard[row][col] == empty) gameboard[row][col] = val; else throw new illegalargumentexception("player there!"); } static void displayboard() { for(int r=0; r < gameboard.length; r++) { system.out.print("|"); for(int c=0; c < gameboard[r].length; c++) { switch(gameboard [r][c]) { case nought: system.out.print("o"); break; case cross: system.out.print("x"); break; default: //empty system.out.print(" "); } system.out.print("|"); } system.out.println("\n-----\n"); } } static void createboard(int rows, int cols) { int gameboard[][]= new int[3][3]; } static int winortie() { //nought wins horizontal if (gameboard[0][0] == nought && gameboard[0][1] == nought && gameboard[0][2] == nought) return nought; else if (gameboard[1][0] == nought && gameboard[1][1] == nought && gameboard[1][2] == nought) return nought; else if (gameboard[2][0] == nought && gameboard[2][1] == nought && gameboard[2][2] == nought) return nought; //nought wins veritcal else if (gameboard[0][0] == nought && gameboard[1][0] == nought && gameboard[2][0] == nought) return nought; else if (gameboard[0][1] == nought && gameboard[1][1] == nought && gameboard[2][1] == nought) return nought; else if (gameboard[0][2] == nought && gameboard[1][2] == nought && gameboard[2][2] == nought) return nought; //nought wins diagonal else if (gameboard[0][0] == nought && gameboard[1][1] == nought && gameboard[2][2] == nought) return nought; else if (gameboard[0][2] == nought && gameboard[1][1] == nought && gameboard[2][0] == nought) return nought; //cross wins horizontal else if (gameboard[0][0] == cross && gameboard[0][1] == cross && gameboard[0][2] == cross) return cross; else if (gameboard[1][0] == cross && gameboard[1][1] == cross && gameboard[1][2] == cross) return cross; else if (gameboard[2][0] == cross && gameboard[2][1] == cross && gameboard[2][2] == cross) return cross; //cross wins veritcal else if (gameboard[0][0] == cross && gameboard[1][0] == cross && gameboard[2][0] == cross) return cross; else if (gameboard[0][1] == cross && gameboard[1][1] == cross && gameboard[2][1] == cross) return cross; else if (gameboard[0][2] == cross && gameboard[1][2] == cross && gameboard[2][2] == cross) return cross; //cross wins diagonal else if (gameboard [0][0] == cross && gameboard[1][1] == cross && gameboard[2][2] == cross) return cross; else if (gameboard [0][2] == cross && gameboard[1][1] == cross && gameboard[2][0] == cross) return cross; else return -2; } }
your shadowing gameboard
variable. when call createboard
creating new, local variable , initialising it, leaves other createboard
variable uninitialised.
static void createboard(int rows, int cols) { int gameboard[][]= new int[3][3]; }
try....
static void createboard(int rows, int cols) { gameboard = new int[3][3]; }
instead
Comments
Post a Comment