Hello all. I am a newbie. I have completed one college class on Java. I am trying to develop a simple tic-tac-toe game. I have 2 classes. One is TicTacToe and the other is TicTacToeBoard. Here is the code I have so far.
class TicTacToe {
TicTacToeBoard board = new TicTacToeBoard();
private int moves = 0;
private int Gamemoves;
public static void main(String[] args) {
TicTacToe game = new TicTacToe();
game.startGame();
}
public void startGame() {
board.setVisible(true);
}
public int getMoves() {
return moves;
}
public void setMoves(int moves) {
this.moves = moves;
}
}
public class TicTacToeBoard extends javax.swing.JFrame {
TicTacToe game;
int mmSet, ulSet, umSet, urSet, mlSet, mrSet, llSet, lmSet, lrSet;
int NumMoves = 0;
public TicTacToeBoard() {
initComponents();
}
private void btnMMStateChanged(javax.swing.event.ChangeEvent evt) {
if (mmSet == 0) {
mmSet = 1;
NumMoves = game.getMoves();
System.out.println(NumMoves);
btnMM.setIcon(new javax.swing.ImageIcon(getClass().getResource("/tic/tac/toe/images/X.png")));
stripMouseListeners((java.awt.Component) btnMM);
} else {
}
}
The problem occurs 12 of TicTacToeBoard class. I have read about this problem and it seems like my problem is that I am not properly using the game variable. I am not sure where to go from here. Here is the stack trace.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at tic.tac.toe.TicTacToeBoard.btnMMStateChanged(TicTacToeBoard.java:179)
at tic.tac.toe.TicTacToeBoard.access$400(TicTacToeBoard.java:15)
at tic.tac.toe.TicTacToeBoard$5.stateChanged(TicTacToeBoard.java:114)
at javax.swing.AbstractButton.fireStateChanged(AbstractButton.java:1913)
at javax.swing.AbstractButton$Handler.stateChanged(AbstractButton.java:2333)
at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)
at javax.swing.DefaultButtonModel.setArmed(DefaultButtonModel.java:188)
at javax.swing.plaf.basic.BasicButtonListener.mousePressed(BasicButtonListener.java:233)
at java.awt.Component.processMouseEvent(Component.java:6502)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4489)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Can someone please explain the proper way for me to try to get / set the number of moves from the TicTacToeBoard class?
Thanks,
David