Выбор режима чего-либо. Как сделать менее затратный переключатель режимов для игры

388
26 июня 2017, 18:24

Допустим, есть игра в которой 2 режима. При одном режиме шарики от стен отскакивают, а при другом не отскакивают. В настройках нужен переключатель режимов. Я представляю это так: В настройках есть логическая переменная. А в коде при выполнении проверяется условие, если переменная Истина, то реализуется один участок кода, если ложь то другой. Но при каждом кадре приходится проверять это условие. Возможен ли такой подход, при котором это условие не проверялось бы так часто?

Вот что еще я представляю: В настройках выставлена Истина. Вхожу в класс реализации игрового процесса и в нем в onCreate условие: Если истина, то в определенном месте кода выполнять такой то метод. Но таких возможностей Java вроде не предоставляет.

Answer 1

Возможен такой подход: в onCreate делается проверка логической переменной и в зависимости от неё создается, тот или иной класс , или тот или иной объект класса

Answer 2

ИграА - шарики отскакивают, ИграБ - шарики не отскакивают.

что если создать 2 класса играА и играБ (играБ наследуется от играА). В классе играА в методе пририсовка кадра убрать if, и сделать нужно поведение шариков. А в классе ИграБ переопеределить метод прорисовка шариков и сделать так чтобы они отскакивали.

Ну и в самой функции запуска игры проверять значение с настроек и на его основе запускать нужный класс.

p.s. Паттерн Strategy

Answer 3

Попробуйте использовать классическую реализацию preference. Есть настройки например preferenceFragment, там ваш switchPreference, подписываетет его, или переопределяет onPreferenceChange там где нужно, прописываете свои логику поведения, те вставляете ваш метод/функц. боунсить шарики или нет - например обычным сетом. Это очевидный вариант, но путей много. Можете организовать обычный State pattern, через интерфейс, но суть будет такая же. Можете сделать как вы делали через SharedPreference и bool полем, но тогда в onResume , отлавливать его, тоже стандартный рабочий вариант, но только не на каждый кадр... Удачи.

READ ALSO
Как работать с полем типа DateTime в MSSQL через JDBC?

Как работать с полем типа DateTime в MSSQL через JDBC?

Есть таблица в которой содержится поле типа DateTime в котором хронится дата и время некой операцииПри запросе через MS SQL Manager я вижу что есть...

390
Запуск процесса с мониторингом Windows

Запуск процесса с мониторингом Windows

Добрый день! Необходимо запустить процесс из командной строки и отследить файлы, созданные имПробовал Process Monitor - он действительно отображает...

344