public void render(Graphics2D g) {
		Graphics2D g2d = (Graphics2D) finalBoard.getGraphics();
		g2d.drawImage(gameBoard, 0, 0, null);
		for (int row = 0; row < ROWS; row++) {
			for (int col = 0; col < ROWS; col++) {
				Tile current = board[row][col];
				if (current == null)
					continue;
				current.render(g2d);
			}
		}

		g.drawImage(finalBoard, x, y, null);
		g2d.dispose();

		g.setColor(Color.lightGray);
		g.setColor(new Color(0xFF0000));
		g.setFont(new Font("Arial", Font.BOLD, 16));
		String howTo1 = "HOW TO PLAY: Use your arrow keys to move the tiles. When";
		String howTo2 = "two tiles with the same number touch, they merge into one!";
		g.drawString(howTo1, 40, Game.HEIGHT - 40);
		g.drawString(howTo2, 40, Game.HEIGHT - 10);
		g.drawString("Move the Tiles to Match the Picture!", 50, 130);
		g.fillRect(380, 100, 120, 40);
		g.fillRect(380, 100, 120, 40);
		g.setColor(new Color(0xF9F6F2));
		g.setFont(new Font("Arial", Font.BOLD, 18));
		g.drawString("New Game", 392, 127);
		g.setColor(new Color(0xFF0000));
		g.setFont(new Font("Arial", Font.BOLD, 43));
		g.drawString("Rubik's Race", 50, 80);
		g.setColor(new Color(0xBBADA0));
		g.fillRect(330, 32, 90, 50);
		g.fillRect(424, 32, 90, 50);
		g.setColor(new Color(0xEEE4DA));
		g.setFont(new Font("Arial", Font.BOLD, 13));

		g.drawString("SCORE", 353, 50);
		g.drawString("BEST", 450, 50);
		g.setColor(new Color(0xFFFFFF));
		g.setFont(new Font("Arial", Font.BOLD, 17));
		g.setStroke(new BasicStroke(3));
		g.setColor(new Color(0xBF00FD));
		g.drawRect(192, 442, Tile.WIDTH * 3 + 5, 6 + Tile.HEIGHT * 3);

		/*
		 * g.setFont(scoreFont); g.drawString("" + score, 30, 40);
		 * g.setColor(Color.red); g.drawString("Best: "+highScore,
		 * Game.WIDTH-DrawUtils.getMessageWidth("Best: "+highScore, scoreFont,
		 * g)-20, 40);
		 * g.drawString("Fastest: "+formatTime(fastestMS),Game.WIDTH-
		 * DrawUtils.getMessageWidth("Fastest: "+formatTime(fastestMS),
		 * scoreFont, g)-20,90); g.setColor(Color.black);
		 * g.drawString("Time: "+fromattedTime, 30, 90);
		 */
	}