public LocalMain() {
		super();
		canvas = new DrawCanvas();
		canvas.setPreferredSize(new Dimension(winWidth, winHeight));
		canvas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (game.isTie() || game.whiteWins() || game.blackWins())
				{
					game.reset();
					setTitle("Fanorona");
					repaint();
					return;
				}
				
				int mouseX = e.getX();
				int mouseY = e.getY();

				int x = (mouseX + radius) / spacing;
				int y = game.getBoard().getHeight() - ((mouseY + radius) / spacing) + 1;

				Point point = new Point(x, y);
				if (game.getBoard().isValidPoint(point))
				{
					if (! game.update(point))
					{
						System.out.println("!!! INVALID MOVE: " + point);
						System.out.println();
					}
				}
				
				if (game.isTie())
				{
					System.out.println("Tie");
					setTitle("Tie");
				}
				else if (game.whiteWins())
				{
					System.out.println("White wins");
					setTitle("White wins");
				}
				else if (game.blackWins())
				{
					System.out.println("Black wins");
					setTitle("Black wins");
				}
				
				repaint();
			}
		});
		
		Container cp = getContentPane();
		cp.setLayout(new BorderLayout());
		cp.add(canvas, BorderLayout.CENTER);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setTitle("Fanorona");
		setVisible(true);
	}