Показать сообщение отдельно
Старый 24.10.2017, 11:31
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 8  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Цитата:
Сообщение от Wolsh Посмотреть сообщение
То есть, на каждую стадию у тебя должен быть текст, описывающий ситуацию и к нему набор вариантов действий с какими-то ID (здесь может быть просто a, b, c), и к каждому варианту — адрес следующей стадии, то есть куда перейти в случае выбора этого варианта.
Тогда получится запрограммировать механику абстрактно, то есть универсально для всех стадий, а не расписывать В КОДЕ каждый поворот сюжета))
Да, именно. Это наверное обратно в тему с вопросами по проектированию , но я кратно обрисую, что придумал. Планирую сделать класс CurrentState, хранящий инфо о текущей фазе игры: локация, участвующие персонажи и т.п. На основании свойств экземпляра Current State выводится нужный исходный арт и текст. Далее запускается метод отбора вариантов действий для игрока. Действие - это либо экземпляры класса, либо данные статической таблицы (помятуя о твоих советах в соседней ветке), но в любом случае они должны быть описаны некоторым набором свойств, корреспондирующих аналогичным свойствам других игровых объектов. Все они помещаются в массив, который перебирается поэлементно. Значения свойств каждого потенциального действия сравниваются с соответствующими значениями из currentState или экземпляров других классов, которые содержит CurrentState. Если все соответствуют, значит, действие может быть выполнено, и оно должно попасть в меню выбора для игрока. Таким образом, по итогу из общего перечня остаётся несколько доступных действий (вот их и надо как-то отправить в меню, и главное, получить обратную связь). Когда получена инфо, какое действие выбрал игрок, запускаем метод-обработчик, который получает на входе тот самый экземпляр (если действие - это класс) или идентификатор выбранного пользователем действия, и дальше уже "распихивает" задачи по специализированным классам: рассчитать результаты, обновить арт и текст, обновить значения свойств персонажей по результату, обновить CurrentState. Собственно, потом всё повторяется. Как-то так вчерне.

Вот я кое-что из этой механики уже запрограммировал, но весь вывод пока только в консоль через trace. Теперь мучаюсь с выводом на экран в рабочем режиме (это даже для дальнейшей разработки и отладки нужно).