A-tit indd


Автоматы с магазинной памятью



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

Автоматы с магазинной памятью
Есть и другое расширение для конечных автоматов, ко-
торое также использует стек состояний. Внезапно стек 
здесь — это совсем другое и используется для решения 
совсем других задач.
Проблема в том, что конечные автоматы не поддер-
живают 
историю
. Вы знаете, в каком состоянии находи-
тесь 
сейчас
, но не помните 
предыдущего
. Нет простого 
способа вернуться в предыдущее состояние.
Пример. Ранее мы позволили нашей бесстрашной ге-
роине вооружиться до зубов. Нам нужно новое состоя-
ние, которое воспроизводит анимацию выстрела, созда-
ет пулю и другие визуальные эффекты тогда, когда она 
делает выстрел. Поэтому мы собираем на скорую руку 
FiringState
и добавляем на него переход во все со-
стояния, из которых она может выстрелить, когда игрок 
нажимает кнопку.
Сложность заключается в том, чтобы понять: в ка-
кое же состояние героиня перейдет 
после
совершения 
выстрела. Она может начать стрелять из любого состоя-
ния: «Стоять», «Бежать», «Прыгать» и даже «Пригнуться». 
Так как поведение дуб-
лируется в нескольких 
состояниях, тут тоже 
можно применить 
иерархические конеч-
ные автоматы для мно-
гократного использова-
ния кода.


138
Состояние (State) — 
Паттерны программирования игр
Когда серия выстрелов завершится, героиня должна бу-
дет вернуться в исходное состояние.
Если бы мы придерживались традиционных конеч-
ных автоматов, то уже забыли бы, в каком состоянии 
героиня находилась изначально. Чтобы отследить из-
начальное состояние, нам придется определить массу 
почти идентичных состояний — стрелять с места, стре-
лять на бегу, стрелять в прыжке и так далее — и в каж-
дом явно прописать состояние, в которое стоит вернуть-
ся, когда выстрел завершен.
Намного лучше было бы 
сохранить
изначальное со-
стояние, а потом просто снова его вызвать. И опять тео-
рия автоматов приходит нам на помощь. Нужная структу-
ра данных называется 
автомат с магазинной памятью
.
В то время как конечный автомат имеет 
единствен-
ный
указатель на состояние, автомат с магазинной па-
мятью имеет стек указателей. В конечном автомате 
переход в новое состояние заменяет старое. Автомат 
с магазинной памятью позволяет делать то же самое, 
но дает две дополнительные возможности.
• Протолкнуть
новое состояние вверх стека. «Теку-
щее» состояние всегда на самом верху, то есть мы пе-
реходим в новое состояние. Но предыдущее сохраня-
ется прямо под текущим, а не отбрасывается прочь.
• Вытолкнуть
верхнее значение из стека. «Текущее» 
состояние отбрасывается, а находившееся под ним 
становится «текущим».
Рис. 7.2.
Проталкивание и выталкивание — это 
вам не хухры-мухры


То, что нам нужно. Создать всего 
одно
состояние 
«Стрелять». При нажатии нужной кнопки, в каком бы 
состоянии ни находилась героиня, мы 
проталкиваем
состояние «Стрелять» вверх стека. Когда анимация вы-
стрела завершается, мы 
выталкиваем
это состояние от-
туда, и автомат с магазинной памятью возвращает ге-
роиню в предыдущее состояние.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   99   100   101   102   103   104   105   106   ...   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