public void newGame() { // Called when our game is executed. This is the game loop.
		while (true) { // Repeat forever. Makes sure you can keep playing using the same settings, as this way, it just repeats the game startup process.
			gameOver = false; // Game is no longer over.
			resetTiles(); // Reset the tiles to clear the data from the previous game.
			GAMEFRAME.setVisible(true); // Set GAMEFRAME visible, so you can see it.
			if (whoseTurn == 1 && this.AI) {
				whoseTurn = 0;
				turn = Holder.O;
				aiTurn = true;
			} else if (this.AI) {
				turn = Holder.X;
				aiTurn = false;
				whoseTurn = 1;
			} else {
				turn = Holder.X;
			}
			if (aiTurn)
				GAME_AI.aiMove();
			while (!gameOver) { // Loop until game over is true.
				if (nextTurn) { // If nextTurn was set to true..
					nextTurn = false; // set back to false, so it doesn't repeat next loop.
					nextTurn(); // Switch turns.
				}
				try {
					TimeUnit.MILLISECONDS.sleep(25); // Wait 25 milliseconds. Added to decrease the load on your CPU from constant updates.
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
				GAMEFRAME.repaint(); // Repaint. Displays any changes made.
			}
				 // Game is now over.

			try {
				TimeUnit.SECONDS.sleep(5); // Wait 5 seconds, so user(s) can see why they lost/won/ had a draw.
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			getGameframe().setVisible(false); // Remove GAMEFRAME from sight so it's members can be reset.
		}
	}