A-tit indd


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



Download 3,35 Mb.
Pdf ko'rish
bet135/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   131   132   133   134   135   136   137   138   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

Паттерны программирования игр
— Паттерны очередности
183
Но такой вариант уже более-менее работающий, так 
что продолжим. Пара безмозглых мешков с костями 
не будут серьезным препятствием для нашей рожден-
ной в Скандинавии валькирии, поэтому мы добавим 
несколько проклятых статуй. Они будут стрелять в по-
хитительницу вспышками молний, и ей придется про-
крадываться мимо них на цыпочках.
Придерживаясь нашего стиля программирования 
«самый примитивный», можно написать следующее:
// …
Entity leftStatue;
Entity rightStatue;
int leftStatueFrames = 0;
int rightStatueFrames = 0;
// ‚6 $ :
while (true)
{
/ / €
if (++leftStatueFrames == 90)
{
leftStatueFrames = 0;
leftStatue.shootLightning();
}
if (++rightStatueFrames == 80)
{
rightStatueFrames = 0;
rightStatue.shootLightning();
}
// 733 …
}
Вы понимаете, что от поддержки приведенного в при-
мер кода мы явно не получим удовольствие. У нас просто 
огромное количество переменных и императивного кода, 
сконцентрированного в главном игровом цикле, каждая 
часть которого обрабатывает отдельную сущность в игре. 
Стремясь заставить сущности действовать одновременно, 
мы были вынуждены собрать их код в одну кучу.
Каждый раз, когда к ва-
шей архитектуре начи-
нает подходить фраза 
«смешать в одну кучу», 
будьте готовы: скоро вы 
столкнетесь с пробле-
мами.


184
Метод Update (Update method) — 
Паттерны программирования игр
Паттерн, который мы планируем использовать, на-
столько прост, что он уже есть в вашей голове: 
каждая 
сущность должна инкапсулировать собственное поведе-
ние
. Это сделает код более лаконичным, а также позво-
лит легко добавлять и удалять сущности.
Тут нам понадобится 
слой абстракции
, его мы созда-
дим с помощью абстрактного метода 
update()
. Игро-
вой цикл поддерживает набор объектов, но не знает их 
конкретные типы. Ему известно только то, что они мо-
гут быть обновлены. Это позволяет отделить поведение 
каждого объекта от игрового цикла и других объектов.
Один раз за кадр игровой цикл проходит через серию 
методов 
update()
для каждого из объектов, и каждый 
из них получает возможность выполнить действие, соот-
ветствующее одному кадру. Вызов метода для всех объек-
тов за один кадр позволяет им действовать одновременно.
Набор объектов в игровом цикле динамический, поэто-
му добавлять или удалять их достаточно просто — доба-
вить их или удалить из набора. Ничто не прописывается 
в коде жестко, следовательно, мы может наполнить уро-
вень обитателями, используя какой-нибудь файл данных.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   131   132   133   134   135   136   137   138   ...   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