A-tit indd


Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet101/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   97   98   99   100   101   102   103   104   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Другой взгляд на паттерны проектирования
135
void Heroine::handleInput(Input input)
{
state_->handleInput(*this, input);
equipment_->handleInput(*this, input);
}
Каждый конечный автомат реагирует на ввод, поро-
ждает определенное поведение и изменяет состояние, 
независимо от другого автомата. Когда два набора со-
стояний относительно независимы друг от друга, это ра-
ботает.
На практике вы встретитесь с некоторыми случаями 
взаимодействия состояний: героиня не может стрелять 
во время прыжка или атаковать с воздуха, если вооруже-
на. Чтобы обеспечить взаимодействие состояний, в код 
одного из них вам, вероятно, придется добавить грубые 
проверки 
if
относительно состояния другой машины. 
Не самое элегантное решение, но оно работает.
Иерархические конечные автоматы
После дополнительной проработки поведения у ге-
роинии наверняка появится много похожих состоя-
ний. Например, состояния «Стоять», «Идти», «Бежать» 
и «Скатиться». В любом из них нажатие «В» заставит ее 
прыгнуть, а «Вниз» — пригнуться.
В простейшей реализации конечных автоматов 
нам придется копировать код в каждое из состояний. 
Было бы намного лучше, если бы мы могли реализовать 
его один раз, а затем использовать там, где нужно.
В обычном объектно-ориентированном программи-
ровании — без конечных автоматов — одним из спосо-
бов использовать общий код для нескольких состояний 
является наследование. Мы могли бы объявить класс 
«на земле», который обрабатывал бы «Прыгать» и «При-
гнуться». «Стоять», «Идти», «Бежать» и «Скатиться» на-
следовали бы от него, добавляя свои особенности.
Оказывается, это распространенная структура, на-
зывается она 
иерархические конечные автоматы

В более полнофункцио-
нальной системе в од-
ной из машин состоя-
ний, возможно, 
присутствовал бы меха-
низм, 
поглощающий
ввод, тем самым не да-
вая второй машине ввод 
получить. Это по-
могло бы предотвратить 
сложную ситуацию, 
в которой обе машины 
пытаются одновременно 
обработать один 
и тот же ввод.
У такого решения могут 
быть как положитель-
ные, так и отрицатель-
ные последствия. На-
следование — мощный 
инструмент повторного 
использования кода, 
но оно также создает 
сильную связанность 
между двумя фрагмен-
тами. Это похоже 
на большой молоток, ко-
торый надо применять 
с осторожностью.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   97   98   99   100   101   102   103   104   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish