public int showPlayerSelect() {
			JPanel panel = new JPanel();
			JLabel chooseText = new JLabel();
			panel.add(chooseText);
			panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
			ButtonGroup buttongroup = new ButtonGroup();
			JRadioButton[] buttons = new JRadioButton[6];

			// makes radio button for each character
			for (Game.Character character : Game.Character.values()){
				JRadioButton button = new JRadioButton(character.toString());
				// sets action command to the ordinal number of the character
				button.setActionCommand(character.name());
				buttongroup.add(button);
				buttons[character.ordinal()] = button;
				if (players.contains(new Player(new CharacterPiece(character)))){
					// if there is already a player with that character, disable button
					button.setEnabled(false);
				}
				panel.add(button);
			}

			// initialise first button to be selected
			for (JRadioButton button : buttons){
				if (button.isEnabled()){
					button.setSelected(true);
					break;
				}
			}

			chooseText.setText("Pick character for player: "+players.size());

			int response = JOptionPane.showOptionDialog(null, panel, "Pick character",
					JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
					null, new String[]{"next", "done"} , null);

			ButtonModel buttonSelected = buttongroup.getSelection();

			// if no buttons are selected.
			if (buttonSelected == null){
				if (response == NEXT_CHARACTER){
					Dialogs.showMessageBox("Oi", "Must select a player");
				}
				return response;
			}

			// add player to the game
			Game.Character characterSelected = Game.Character.valueOf(buttonSelected.getActionCommand());
			CharacterPiece piece = new CharacterPiece(characterSelected);
			if (response == NEXT_CHARACTER){
				players.add(new Player(piece));
			}
			return response;
		}