Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Ако сте програмер игара који користи библиотеку Пигаме, вероватно сте наишли на класу Сприте. Сприте класа је моћан алат за креирање ликова у игри које можете лако да померате, ротирате и скалирате на екрану.

Са једноставним Питхон програмом, можете научити о процесу креирања ликова игре заснованих на сприте-у у Пигаме-у. Сазнајте како да креирате основну Сприте класу, а затим додајте атрибуте и методе за контролу понашања.

Увод у Пигамеов Сприте Цласс

Сприте класа у Пигаме-у је класа контејнера која садржи све атрибуте и понашања карактера игре. Потиче од Пигамеове класе Сурфаце, која представља слику са фиксном ширином и висином.

Да бисте радили са њим, мораћете да креирате нову класу која наслеђује класу Сприте и дефинишете све атрибуте и методе које желите да ваш лик игре има.

Креирање основне класе Сприте за лик игре

Први, инсталирајте пигаме модул користећи пип. Урадите то са овом командом:

пип инсталирај пигаме

Да бисте креирали основни сприте, мораћете да увезете класу Сприте из Пигаме-а и креирате нову класу која ће наследити од ње. Затим можете дефинисати све атрибуте и методе које желите да ваш лик игре има.

На пример, можда бисте желели да направите класу Сприте за лик играча који може да се креће лево и десно по екрану. Да бисте то урадили, можете дефинисати следеће атрибуте:

  • позиција: Точка која садржи к и и координате сприте-а на екрану.
  • брзина: Тупле који одржава брзину којом се сприте креће хоризонтално и вертикално.

И следеће методе:

  • ажурирање(): Метода која ажурира позицију сприте-а на основу његове брзине.
  • цртање(): Метода која извлачи срајт на екран.

Ево примера основне Сприте класе која имплементира ове атрибуте и методе:

увоз пигаме

класаПлаиер(пигаме.сприте. Сприте):
деф__у томе__(селф, к, и, велоцити_к, велоцити_и):
супер().__у томе__()
селф.поситион = (к, и)
селф.велоцити = (велоцити_к, велоцити_и)

дефажурирање(сам):
селф.поситион = (селф.поситион[0] + селф.велоцити[0], селф.поситион[1] + селф.велоцити[1])

дефцртати(сам, површина):
пигаме.драв.круг(површине, (255, 0, 0), селф.позиција, 10)

Метода __инит__ је посебна метод у Питхон класама који се покреће када креирате инстанцу класе. Можете га користити за иницијализацију атрибута инстанце.

У овом коду, метода __инит__ класе Плаиер узима четири аргумента: к, и, велоцити_к и велоцити_и. Ови аргументи одређују почетну позицију и брзину сприте-а играча.

Метода __инит__ такође позива методу супер().__инит__(), која је метода __инит__ родитељске класе Сприте. Ово је неопходно јер је класа Плаиер подкласа класе Сприте, а __инит__ метода класе Сприте поставља неке атрибуте који су потребни свим спријтовима.

Додавање атрибута и метода за контролу понашања

Сада када имате основну класу Сприте, можете додати атрибуте и методе за контролу понашања вашег лика у игри. Ово може укључивати ствари попут кретања, напада, скакања и још много тога.

Да бисте додали ове атрибуте и методе, мораћете да размислите о томе које акције желите да играте карактер који можете да изведете и дефинишете одговарајуће атрибуте и методе у вашем Сприте-у класа.

На пример, можда ћете желети да додате метод за контролу кретања духа, као што је мове_лефт() метод који смањује брзину духа на к-оси.

Ево примера модификоване класе Сприте која укључује ове додатне атрибуте и методе:

класаПлаиер(пигаме.сприте. Сприте):
деф__у томе__(селф, к, и, велоцити_к, велоцити_и):
супер().__у томе__()
селф.поситион = (к, и)
селф.велоцити = (велоцити_к, велоцити_и)

дефажурирање(сам):
селф.поситион = (селф.поситион[0] + селф.велоцити[0], селф.поситион[1] + селф.велоцити[1])

дефцртати(сам, површина):
пигаме.драв.круг(површине, (255, 0, 0), селф.позиција, 10)

дефпомери се лево(сам):
селф.велоцити = (-1, селф.велоцити[1])

дефмове_ригхт(сам):
селф.велоцити = (1, селф.велоцити[1])

Да бисте користили класу Плаиер у својој игри Пигаме, мораћете да креирате инстанцу класе и по потреби позовете њене методе.

Почните тако што ћете креирати прозор и инстанцу сприте-а Плаиер:

# Иницијализујте Пигаме
пигаме.инит()

# Подесите величину прозора
величина_прозора = (640, 480)

# Направите прозор
прозор = пигаме.дисплаи.сет_моде (величина_прозора)

# Креирајте сприте играча
играч = Играч(320, 240, 0, 0)

Затим дефинишите главну петљу игре која обрађује догађаје на тастатури и ажурирања и црта сприте. Када притиснете тастере са стрелицом лево или десно, срајт ће се померити у одговарајућем смеру.

# Главна петља игре
докИстина:
# Руковати догађајима
за догађај ин пигаме.евент.гет():
ако евент.типе == пигаме. ОДУСТАТИ:
пигаме.куит()
сис.екит()

ако евент.типе == пигаме. КЕИДОВН:
ако евент.кеи == пигаме. К_ЛЕФТ:
плаиер.мове_лефт()
елиф евент.кеи == пигаме. К_ДЕСНО:
плаиер.мове_ригхт()

# Ажурирајте сприте играча
плаиер.упдате()

# Очистите прозор
виндов.филл((255, 255, 255))

# Нацртајте сприте играча
плаиер.драв (прозор)

# Ажурирајте екран
пигаме.дисплаи.упдате()

Са резултујућим програмом, моћи ћете да контролишете сприте играча и посматрате како се црта на екрану на различитим позицијама:

Учитавање и приказ графике Сприте-а помоћу модула слике

Сада када имате основну Сприте класу са атрибутима и методама за контролу понашања, вероватно ћете желети да додате нешто графике свом сприте-у. Пигамеов сликовни модул олакшава учитавање и приказивање слика на екрану.

Да бисте учитали слику, мораћете да користите функцију пигаме.имаге.лоад() која узима путању датотеке као аргумент и враћа објекат Сурфаце. Затим можете доделити овај објекат Сурфаце атрибуту сприте-а, као што је селф.имаге, који можете користити да нацртате сприте на екрану.

На пример, ево како можете да учитате слику и доделите је духу:

увоз пигаме

класаПлаиер(пигаме.сприте. Сприте):
деф__у томе__(селф, к, и, велоцити_к, велоцити_и, имаге_патх):
супер().__у томе__()
селф.поситион = (к, и)
селф.велоцити = (велоцити_к, велоцити_и)
селф.имаге = пигаме.имаге.лоад (патх_имаге)

дефажурирање(сам):
селф.поситион = (селф.поситион[0] + селф.велоцити[0], селф.поситион[1] + селф.велоцити[1])

дефцртати(сам, површина):
површине.блит(селф.слика, селф.позиција)

дефпомери се лево(сам):
селф.велоцити = (-1, селф.велоцити[1])

дефмове_ригхт(сам):
селф.велоцити = (1, селф.велоцити[1])

Овај код дефинише класу Плаиер која проширује Пигаме класу Сприте и укључује атрибуте за позицију, брзину и слику, као и методе за ажурирање позиције сприте-а, исцртавање сприте-а на екран и контролу кретање.

Можете погледати ово ГитХуб репо за комплетан код!

Побољшајте управљање Сприте-ом помоћу класе Сприте

Класа Сприте пружа згодан контејнер за све атрибуте и понашања лика игре, што олакшава ажурирање, цртање и контролу сприте-а на екрану.

Имплементацијом Сприте класе у своју Пигаме игру, можете побољшати свеукупно искуство за своје играче и поједноставити процес развоја за себе.