A-tit indd


Команда (Command) —  Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet31/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   27   28   29   30   31   32   33   34   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

44
Команда (Command) — 
Паттерны программирования игр
отмененное действие, то нажатие эквивалентно «Повто-
ру», то есть повторному выполнению команды.)
Поддержка нескольких уровней отмены ненамного 
сложнее. Вместо того чтобы помнить последнюю коман-
ду, мы сохраняем список команд и ссылку на «текущую». 
Когда игрок выполняет команду, мы добавляем ее в спи-
сок и устанавливаем на нее указатель «текущая».
Рис. 2.4. 
Перемещение по стеку отмены
Когда игрок выбирает «Отмена», мы отменяем теку-
щую команду и переводим указатель текущей команды 
на шаг назад. Когда он выбирает «Повтор», мы продвигаем 
указатель вперед, а затем выполняем эту команду. Если он 
выполнит новую команду после отмены, все, что находит-
ся в списке после текущей команды, отбрасывается.
В первый раз, когда я реализовал это в редакторе 
уровней, я почувствовал себя гением. Я был поражен 
тем, насколько все просто и насколько хорошо работает. 
Требуется дисциплина, чтобы обеспечить прохождение 
каждой модификации данных через команды, но как 
только вы это сделаете — дальше станет легче.
С классами и без функций?
Команды, как я уже говорил, похожи на функции перво-
го класса или замыкания, но каждый пример, который 
я демонстрировал, включал написание класса. Если вы 
знакомы с функциональным программированием, вам, 
вероятно, интересно, где тут место для функций.
Я писал примеры именно таким образом, поскольку 
у языка C++ довольно ограниченная поддержка функ-
ций первого класса. Указатели на функции не имеют 
Повтор не столь рас-
пространен в играх, 
но повторное воспроиз-
ведение (replay) — да. 
Примитивная реализа-
ция подразумевает со-
хранение состояния 
всей игры каждый кадр, 
чтобы заново ее вос-
произвести, но это тре-
бует слишком много па-
мяти.
Вместо этого многие 
игры записывают набор 
команд, которые выпол-
няются каждой сущно-
стью игры каждый кадр. 
Чтобы воспроизвести 
игру, движок просто за-
пускает игру как обычно 
и исполняет предвари-
тельно записанные 
команды.



Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   ...   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