ОбъяснениеКак я могу создать систему Quest Quest, которая легко расширяется?
Допустим, у нас есть несколько квестов, которая вознаграждает игрока после завершения что-то. Приведенные ниже примеры показывают задания пользователя:
Name: Get a high score of 100
Requirement: Score of 100
Reward: 10 Coins
Name: Get a high score of 5000
Requirement: Score of 5000
Reward: 10 Diamonds
Name: Destroy 20 ships
Requirement: Destroy 20 ships
Reward: 5 Diamonds
Name: Reach level 5
Requirement: Level 5
Reward: 20 Coins, 10 Diamonds
Затем я создаю следующую логику:
Создать суперкласс с именем «Quest». Создайте подкласс для каждого квеста; наследуя суперкласс «Квест». Используя полиморфизм, мы вызываем метод CheckForCompletion, чтобы проверить, выполнено ли задание квеста. Если это так, пользователь получает вознаграждение.
Вопрос
Мой вопрос я могу создать таблицу базы данных под названием «Задания» и хранить каждый из перечисленных выше заданий в таблице?
Задания Пример таблицы данных: Имя: Уничтожить 20 кораблей Требование: { «Destroy», «20»} Награда: { «Бриллианты», «5»} Если да, то это лучший способ для загрузки каждый квест в соответствующий класс?
ИЛИ
ли я создать класс для каждого квеста, не создавая таблицу квестов? Если да, то как я узнаю, когда пользователь выполнил квест, чтобы пользователь дважды не награждал награду?
Я знаю, что могу создать единый стол и сохранить необходимые требования. Тогда у вас есть класс с кучей операторов if для выполнения правильного кода, но это не кажется мне правильным. То, о чем я прошу; есть ли лучший способ сделать это?
Благодаря
Редактировать 1:
Каждый квест может иметь несколько требований. Например: Уничтожьте 5 кораблей, Убейте 10 единиц, Оценка 1000 и т. Д.
Чтобы объяснить, хочу ли я хочу, чтобы это было исключение, если заявления. Я не хочу делать, если такие утверждения;
if (score == 100)
//process
else if (ships_destroyed == 5)
//process
else if (level == 5)
//process
else if (ships_destroyed == 5 && units_killed == 10 && score == 1000)
//process
Я хотел бы устранить этот процесс, как я мог бы сотни квестов, и я не вижу его расширения достаточно легко. Так есть лучший способ?
Каждый квест может иметь несколько предварительных условий. Сначала квест мог иметь только одно предварительное условие, подобное «уничтожить 5 кораблей», но по мере продвижения пользователя квесты становятся сложнее и могут иметь 5 или более предварительных условий. Я все еще не понимаю, как проверить, выполняется ли каждое предварительное условие с помощью триггеров. Можете ли вы объяснить дополнительные или любые ссылки, пожалуйста? – Beardslapper
@Beardslapper ищет обновления. Надеюсь, это понятно – Natalia