Sisendile reageerimine on iga mängu jaoks ülioluline ja klaviatuuri on hea toetada kasutajatele, kes seda eelistavad. Siit saate teada, kuidas Pythoni arkaadteegiga.

Klaviatuurisisend on mänguarenduse oluline osa ja suurepärase kasutuskogemuse pakkumiseks on ülioluline seda tõhusalt käsitleda. Arcade'i teek pakub otsest ja tõhusat viisi Pythoni mängude klaviatuurisisendi käsitlemiseks.

Mängijaga lihtsa mängu loomine

Täieliku koodi leiate siit see GitHubi repo.

Enne klaviatuurisisendite käsitlemisse sukeldumist veenduge, et teil on pip teie seadmesse installitud. Kasutage seda käsku arkaadteegi installimiseks:

pip install arkaad

Pärast seda looge lihtsa mängu skelett:

importida arkaad

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)

defon_draw(ise):
arcade.start_render()

defvärskendada(ise, delta_aeg):
üle andma

MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

instagram viewer

See loob valge taustaga akna. Järgmisena lisage oma mängu mängija:

klassMängija:
def__selles__(ise, x, y):
ise.x = x
ise.y = y
ise.kiirus = 5
ise.raadius = 20

defjoonistada(ise):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. SININE)

defliigu vasakule(ise):
ise.x -= ise.kiirus

defliigu paremale(ise):
ise.x += ise.kiirus

defüles liikuma(ise):
ise.y += ise.kiirus

defliigu alla(ise):
ise.y -= ise.kiirus

See loob lihtsa sinise ringiga mängija. Saate selle mängija oma mängu lisada, muutes seda Minu Mäng klass:

importida arkaad

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus, "Minu mäng")
arcade.set_background_color (arcade.color. VALGE)
self.player = Mängija (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

defon_draw(ise):
arcade.start_render()
self.player.draw()

defvärskendada(ise, delta_aeg):
üle andma

defpeamine():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

kui __nimi__ == "__main__":
peamine ()

Nüüd on teie mängus mängija, kelle saate ekraanile joonistada.

Klahvivajutustele ja -vabastustele reageerimine

Mängus kasutaja sisendile vastamiseks peate tegelema klahvivajutuste ja vabastamisega. Arcade raamatukogu pakub nende sündmuste käsitlemiseks kahte meetodit. on_key_press ja on_key_release.

Nende meetodite kasutamiseks peate need oma arkaad. Aken alamklass. Kui mängija vajutab või vabastab klahvi, käivitab arkaad vastava meetodi, edastades sellele kaks argumenti: võti ja modifikaatorid. võti on täisarv, mis tähistab vajutatud või vabastatud klahvi koodi. modifikaatorid on bitiväli, mis tähistab mis tahes muuteklahvi, mida mängija ka vajutas, nagu Shift või Control.

Siin on näide selle kohta, kuidas mängus klahvivajutusega reageerida.

klassMinu Mäng(arkaad. aken):
defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
# Liigutage mängija vasakule
elif võti == arcade.key. PAREMALE:
# Liigutage mängija paremale
elif võti == arcade.key. UP:
# Liigutage mängija üles
elif võti == arcade.key. ALLA:
# Liigutage mängija alla

Põhiväljaannetele reageerimiseks saate määratleda on_key_release meetod samal viisil:

klassMinu Mäng(arkaad. aken):
defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
# Lõpeta mängija vasakule liigutamine
elif võti == arcade.key. PAREMALE:
# Lõpetage mängija paremale liigutamine
elif võti == arcade.key. UP:
# Lõpetage mängija üles tõstmine
elif võti == arcade.key. ALLA:
# Lõpetage mängija allapoole liigutamine

Oluline on märkida, et jäädvustamine kasutaja sisend pygame'is nõuab teie mängutsüklis sündmuste käsitsi kontrollimist. Teisest küljest kutsub Arcade'i teek automaatselt välja asjakohased meetodid, kui mängija klahvi vajutab või vabastab. See tähendab, et te ei pea oma mängutsükli võtmesündmusi käsitsi kontrollima, säästes teid lisakoodiga seotud probleemidest.

Klaviatuuri sisendikäsitluse kohandamine teie mängu vajadustega

Arcade'i teek pakub palju võimalusi klaviatuurisisendi kohandamiseks. Võib-olla soovite muuta oma mängu klahvide sidumist või lubada mängijal oma klahvide sidumist ise kohandada.

Seda saate teha sõnastikku määratledes võtme_kaart mis kaardistab iga võtme mängija objekti vastava meetodiga. Et mängija saaks oma klahvide sidumist kohandada, võite lisada seadete menüü, mis muudab võtme_kaart sõnastik, mis põhineb mängija eelistustel.

Siin on näide:

klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus, pealkiri):
super().__init__(laius, kõrgus, pealkiri)
self.player = Player(100, 100)

self.key_map = {
arkaad.võti. VASAK: self.player.move_left,
arkaad.võti. RIGHT: self.player.move_right,
arkaad.võti. UP: self.player.move_up,
arkaad.võti. ALLA: self.player.move_down
}

defon_key_press(ise, võti, muutjad):
kui võti sisse self.key_map:
self.key_map[key]()

defon_key_release(ise, võti, muutjad):
kui võti sisse self.key_map:
ise.key_map[klahv + 1]()

Vastake kasutaja sisestustele reaalajas

Reaalajas kasutaja sisendile reageerimine on kaasahaarava mängu loomisel oluline aspekt. Kui võtate aega, et oma mängus klaviatuurisisendit õigesti käsitleda, saate luua köitvama ja kaasahaarava kogemuse oma mängijatele ja lõpuks paista oma mäng rahvarohkes hulgas silma turuplats.