Reagavimas į įvestį yra gyvybiškai svarbus bet kuriam žaidimui, todėl naudinga palaikyti klaviatūrą naudotojams, kurie jos pageidauja. Sužinokite, kaip tai padaryti naudojant Python arkadinę biblioteką.

Klaviatūros įvestis yra esminė žaidimo kūrimo dalis, todėl labai svarbu ją veiksmingai tvarkyti, kad būtų užtikrinta puiki vartotojo patirtis. Arcade biblioteka yra paprastas ir efektyvus būdas tvarkyti klaviatūros įvestį Python žaidimuose.

Paprasto žaidimo su grotuvu kūrimas

Visą kodą galite rasti šis „GitHub“ atpirkimas.

Prieš pradėdami tvarkyti klaviatūros įvestis, įsitikinkite, kad turite pip įdiegtas jūsų įrenginyje. Norėdami įdiegti arkadų biblioteką, naudokite šią komandą:

pip diegimo pasažas

Po to sukurkite paprasto žaidimo skeletą:

importuoti arkada

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klasėMano žaidimas(arkada. Langas):
def__init__(savaime, plotis, aukštis):
super().__init__(plotis, aukštis, "Mano žaidimas")
arcade.set_background_color (arcade.color. BALTAS)

defon_draw(savarankiškai):
arcade.start_render()

defatnaujinti(savaime, delta_laikas):
praeiti

instagram viewer

„MyGame“ (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Taip sukuriamas langas baltame fone. Tada pridėkite žaidėją prie žaidimo:

klasėŽaidėjas:
def__init__(savaime, x, y):
savarankiškai.x = x
pats.y = y
savaime.greitis = 5
savaime.spindulys = 20

defpiešti(savarankiškai):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. MĖLYNA)

defperkelti_į kairę(savarankiškai):
self.x -= self.greitis

defperkelti į dešinę(savarankiškai):
self.x += self.greitis

defperkelti_aukštyn(savarankiškai):
self.y += self.greitis

defJudėk žemyn(savarankiškai):
self.y -= self.greitis

Taip sukuriamas paprastas grotuvas su mėlynu apskritimu. Galite pridėti šį žaidėją prie savo žaidimo pakeisdami Mano žaidimas klasė:

importuoti arkada

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klasėMano žaidimas(arkada. Langas):
def__init__(savaime, plotis, aukštis):
super().__init__(plotis, aukštis, "Mano žaidimas")
arcade.set_background_color (arcade.color. BALTAS)
self.player = Grotuvas (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

defon_draw(savarankiškai):
arcade.start_render()
self.player.draw()

defatnaujinti(savaime, delta_laikas):
praeiti

defpagrindinis():
„MyGame“ (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

jeigu __vardas__ == "__pagrindinis__":
pagrindinis ()

Dabar jūsų žaidime yra žaidėjas, kurį galite piešti ekrane.

Reagavimas į klavišų paspaudimus ir paleidimus

Norėdami reaguoti į vartotojo įvestį žaidime, turite paspausti ir atleisti klavišus. „Arcade“ biblioteka siūlo du būdus, kaip tvarkyti šiuos įvykius: yra_key_press ir on_key_release.

Norėdami naudoti šiuos metodus, turite juos apibrėžti savo arkada. Langas poklasis. Kai žaidėjas paspaudžia arba atleidžia klavišą, arkada paleis atitinkamą metodą, perduodant jam du argumentus: klavišą ir modifikatorius. Raktas yra sveikasis skaičius, nurodantis paspausto arba atleisto klavišo klavišo kodą. modifikatoriai yra bitų laukas, vaizduojantis bet kokius modifikavimo klavišus, kuriuos žaidėjas taip pat paspaudė, pvz., Shift arba Control.

Štai pavyzdys, kaip reaguoti į žaidimo klavišo paspaudimą:

klasėMano žaidimas(arkada. Langas):
defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ:
# Perkelkite žaidėją į kairę
elifas raktas == arcade.key. DEŠINĖJE:
# Perkelkite grotuvą į dešinę
elifas raktas == arcade.key. AUKŠTYN:
# Perkelkite grotuvą aukštyn
elifas raktas == arcade.key. ŽEMYN:
# Perkelkite grotuvą žemyn

Norėdami atsakyti į pagrindinius leidimus, galite apibrėžti on_key_release metodas taip pat:

klasėMano žaidimas(arkada. Langas):
defon_key_release(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ:
# Nustokite perkelti grotuvą į kairę
elifas raktas == arcade.key. DEŠINĖJE:
# Nustokite judinti žaidėją į dešinę
elifas raktas == arcade.key. AUKŠTYN:
# Nustokite perkelti žaidėją aukštyn
elifas raktas == arcade.key. ŽEMYN:
# Nustokite perkelti grotuvą žemyn

Svarbu pažymėti, kad fiksuojant vartotojo įvestis pygame reikalauja rankinio įvykių tikrinimo žaidimo cikle. Kita vertus, „Arcade“ biblioteka automatiškai iškviečia atitinkamus metodus, kai žaidėjas paspaudžia arba atleidžia klavišą. Tai reiškia, kad jums nereikės rankiniu būdu tikrinti pagrindinių žaidimo ciklo įvykių, todėl jums nereikės papildomo kodo.

Tinkinkite klaviatūros įvesties tvarkymą, kad atitiktų jūsų žaidimo poreikius

„Arcade“ biblioteka suteikia daug būdų, kaip tinkinti klaviatūros įvestį. Galbūt norėsite pakeisti žaidimo klavišų surišimus arba leisti žaidėjui tinkinti savo klavišų surišimus.

Tai galite padaryti apibrėžę žodyną raktų_žemėlapis kuris susieja kiekvieną klavišą su atitinkamu žaidėjo objekto metodu. Jei norite, kad grotuvas galėtų tinkinti savo klavišų surišimus, galite pridėti nustatymų meniu, kuris modifikuoja raktų_žemėlapis žodynas pagal žaidėjo pageidavimus.

Štai pavyzdys:

klasėMano žaidimas(arkada. Langas):
def__init__(aš, plotis, aukštis, pavadinimas):
super().__init__(plotis, aukštis, pavadinimas)
self.player = Player(100, 100)

self.key_map = {
pasažas.raktas. KAIRĖ: self.player.move_left,
pasažas.raktas. RIGHT: self.player.move_right,
pasažas.raktas. UP: self.player.move_up,
pasažas.raktas. DOWN: self.player.move_down
}

defyra_key_press(savaime, raktas, modifikatoriai):
jeigu Raktas in self.key_map:
self.key_map[key]()

defon_key_release(savaime, raktas, modifikatoriai):
jeigu Raktas in self.key_map:
self.key_map[key + 1]()

Atsakykite į vartotojo įvestį realiuoju laiku

Reagavimas į vartotojo įvestį realiuoju laiku yra esminis aspektas kuriant patrauklų žaidimą. Skirdami laiko tinkamai valdyti klaviatūros įvestį žaidime, galite sukurti patrauklesnį ir patrauklesnį įtraukianti patirtis jūsų žaidėjams ir galiausiai jūsų žaidimas išsiskirtų per daug žmonių turgavietėje.