public void init(GameGraphics graphics, GameGUI gui)
	{
		m_graphics = (AliceGameGraphics)graphics;
		m_gui = (AliceGameGUI)gui;
		m_game_board = new AliceBoard(this);
		m_canUndo = false;
		movesHistory = new Stack<String>();
		
		Definitions.makeInitB();
		Definitions.makeMaskB();
		Definitions.makeInitR();
		Definitions.makeMaskR();
		Definitions.makeRankR();

		String testFEN = "8/8/7P/8/8/8/8/k5K1=8/8/8/8/8/8/8/8 w - - 0 37"; //white to promote soon; tests promotion
		//String testFEN = "6k1/8/5r2/6K1/8/8/8/5q2=8/8/8/8/8/8/8/8 w - - 0 37"; //losing badly, tests player 2 checkmate power
		//String testFEN = "k7/7Q/K7/8/8/8/8/8=8/8/8/8/8/8/8/8 w - - 0 37"; //winning badly, can use to test checkmate/stalemate
		//String testFEN = "r1b1k2B/1p5p/2p3p1/p4p2/2BK4/8/PPP1Q1PP/R6R=8/8/8/8/8/8/8/8 b - - 0 37";
		//String testFEN = "8/8/8/1Q6/8/8/8/k6K=8/8/8/8/8/8/8/8 w - - 0 37"; //test queen movement on b file
		m_game_board.FENtoPosition(testFEN);
		//setupStandard();

		String[] param = { "White vs AI", "Black vs AI", "Hotseat Game", "AI vs AI" };
		String input = (String) JOptionPane.showInputDialog(null, "Game Mode?", "Choose your mode" + (Debug.IsDebugging() ? " (DEBUG Mode)" : ""), JOptionPane.QUESTION_MESSAGE, null, param, param[0]);

		if (input == "White vs AI")
		{
			p1 = new AliceHumanPlayer("Human WHITE", Definitions.Color.WHITE, this);
			p2 = new AliceComputerPlayer("CPU BLACK", Definitions.Color.BLACK, this);
		}
		else if (input == "Black vs AI")
		{
			p2 = new AliceHumanPlayer("Human BLACK", Definitions.Color.BLACK, this);
			p1 = new AliceComputerPlayer("CPU WHITE", Definitions.Color.WHITE, this);
		}
		else if (input == "Hotseat Game")
		{
			p1 = new AliceHumanPlayer("Human WHITE", Definitions.Color.WHITE, this);
			p2 = new AliceHumanPlayer("Human BLACK", Definitions.Color.BLACK, this);
		}
		else if (input == "AI vs AI")
		{
			p1 = new AliceComputerPlayer("CPU WHITE", Definitions.Color.WHITE, this);
			p2 = new AliceComputerPlayer("CPU BLACK", Definitions.Color.BLACK, this);
		}
		else
		{
			return;
		}
		
		if (m_game_board.whoseTurn() == Definitions.Color.WHITE)
		{
			p1.promptMove();
		}
		else
		{
			p2.promptMove();
		}
	}