2016-11-12 4 views
2

Я пытаюсь создать игру с несколькими вариантами выбора с 4 возможными ответами на каждый вопрос.
Во время основной части игры игроку будет задан вопрос, и ему будет предложено ввести ответ.
В моем коде, а также в вопрос и ответ Строка, мне как-то нужно будет определить, что является правильным ответом и, возможно, даже поставить флага на вопрос, чтобы он не повторялся в последующих раундах. Также возможные ответы должны быть в рандомизированном/разном порядке между «прохождением».Java: Какая структура для игры с несколькими вариантами выбора

Я пытаюсь выяснить, какую структуру данных использовать для хранения всего вышеперечисленного, чтобы иметь возможность правильно писать код.

Мой первый выбор состоял бы в том, чтобы иметь основной Hashmap<String, HashMap> и второй HashMap<String, Boolean> *, который хранится в первом. Первая карта сохранит строки вопроса как ключи, а вторая HashMap (s) - как значения. Вторая HashMap будет хранить ответы как ключи и логические для каждой клавиши, указывая, какой из них является правильным ответом, как значение.
Тип сложного, но, по крайней мере, теоретически, похоже, что он работает, хотя у меня все еще нет возможности поставить вопрос как «уже заданный вопрос».

Мой второй выбор был бы двумерным массивом, чьи линии будут представлять собой вопрос, то 0 колонка будучи вопрос Строки, 1,2,3,4 столбцы, хранящие ответа строк, 5 колонна хранения правильная строка ответа и, возможно, 7-й столбец (6), хранящий флаг, отмечающий, если вопрос уже не задан.
Хотя проще в теории, я боюсь, что этот метод будет действительно путать с кодом.

Если есть лучшие/более простые способы сделать это, пожалуйста, скажите мне и, возможно, даже уточните их преимущества.

ответ

3

Java - это объектно-ориентированный язык. Вы должны использовать его.

Пример: создать класс, представляющий вопрос и возможные ответы.

public class Question { 
    private String  question; 
    private String  correctAnswer; 
    private List<String> answerList; 
} 

Теперь вы можете создать хороший полезный конструктор, в котором вы даете вопрос первый, то все ответы, используя varargs, правильный ответ первый:

Ваш конструктор может затем построить answers перечислите и позвоните Collections.shuffle(this.answers), чтобы рандомизировать их.

Затем вы добавляете все вопросы в List<Question> и звоните shuffle, поэтому вопросы будут заданы в произвольном порядке и только один раз.

+0

Как я новичок в Java (и оол в целом) Я так старался, чтобы познакомиться со всеми этими новыми разные когда я забыл, какой должен быть очевидный выбор. Спасибо! –

0

Поскольку все это теоретически, вы должны рассмотреть возможность использования объектов.

Оцените класс. Сохраняя ваши строки вопросов вместе с строкой ответа.

Вы можете сохранить столько строк вопроса, сколько хотите, скажем в массиве. Ответ может быть просто целым числом, представляющим индекс правильного ответа.

Что касается Hashmaps, вы можете использовать их, если хотите сохранить уникальные идентификационные значения для каждого вопроса и посмотреть их, но это не обязательно.

Вы можете сохранить эти объекты Вопрос в качестве Arraylist, добавить свободно перетасовать и перебирать их