private void gameRender() {
		if (dbImage == null) {
			dbImage = createImage(PWIDTH, PHEIGHT);
			g = dbImage.getGraphics();
		}

		// clear screen
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, PWIDTH, PHEIGHT);

		// green board
		g.setColor(new Color(62, 156, 76));
		g.fillRect(BORDER, BORDER, PWIDTH - 2 * BORDER, PHEIGHT - 2 * BORDER);

		// draw grid lines
		g.setColor(Color.BLACK);
		for (int i = 0; i <= SIZE; i++)
			g.drawLine(BORDER, BORDER + (PHEIGHT - 2 * BORDER) * i / SIZE, PWIDTH - BORDER, BORDER + (PHEIGHT - 2 * BORDER) * i / SIZE);
		for (int i = 0; i <= SIZE; i++)
			g.drawLine(BORDER + (PWIDTH - 2 * BORDER) * i / SIZE, BORDER, BORDER + (PWIDTH - 2 * BORDER) * i / SIZE, PHEIGHT - BORDER);

		// draw discs
		for (int i = 0; i < SIZE; i++)
			for (int j = 0; j < SIZE; j++) {
				Disc d = board.getDisc(new Coordinate(i, j));
				if (d != Disc.EMPTY) {

					int centerx = (int) (BORDER + (i + 0.5) * (PWIDTH - 2 * BORDER) / SIZE);
					int centery = (int) (BORDER + (j + 0.5) * (PWIDTH - 2 * BORDER) / SIZE);

					if (d == Disc.BLACK)
						g.setColor(Color.BLACK);
					else
						g.setColor(Color.WHITE);
					int r = (PWIDTH - 2 * BORDER) / SIZE / 3;
					g.fillOval(centerx - r, centery - r, 2 * r, 2 * r);

				}
			}

		// draw score
		g.setColor(Color.BLACK);
		g.drawString("Black: " + board.getDiscs(Player.BLACK), 10, 20);
		g.drawString("White: " + board.getDiscs(Player.WHITE), 10, 40);

		if (gameOver)
			gameOverMessage(g);
	}