public boolean gameOver() {
		int cHerobrine = 0, cTotal = 0;
		for (int i = 0; i < instance.BoardSize; ++i) {
			for (int j = 0; j < instance.BoardSize; ++j) {
				if (instance.Board[i][j].getCard() != null) {
					++cTotal;
					if (instance.Board[i][j].getCard().getID() == Card.HEROBRINE) {
						++cHerobrine;
					}
				}
			}
		}
		if (cTotal - cHerobrine == 0) {
			// Award the winner the game and exit
			Player victor =
				instance.Player1.getScore() > instance.Player2.getScore()
				? instance.Player1
				: instance.Player2;
			
			victor.giveWin();
			GamePanel.getThis().updateLabels();
			
			// Play victory sound (eat for a second then burp) :)
			try {
				Card.Clips.get("Eat").loop();
				java.util.concurrent.TimeUnit.SECONDS.sleep(1);
				Card.Clips.get("Eat").stop();
			} catch (InterruptedException ie) {
				Card.Clips.get("Eat").stop();
			}
			Card.Clips.get("Burp").play();
			
			// Show Congratulatory Message
			JOptionPane.showMessageDialog(
				MainFrame.getThis(),
				"Congratulations " + victor.getName() + "!",
				"You Won",
				JOptionPane.INFORMATION_MESSAGE
			);
			
			// Set ActiveGame to null
			GamePanel.getThis().clearBoard();
			instance = null;
			
			// Signal that the game has ended
			return true;
		}
		return false;
	}