Å svare på innspill er avgjørende for ethvert spill, og det er bra å støtte tastaturet for brukere som foretrekker det. Finn ut hvordan med Pythons arkadebibliotek.

Tastaturinndata er en viktig del av spillutvikling, og det er avgjørende å håndtere det effektivt for å gi en god brukeropplevelse. Arcade-biblioteket gir en enkel og effektiv måte å håndtere tastaturinndata i Python-spillene dine.

Lage et enkelt spill med en spiller

Du finner hele koden i denne GitHub-repoen.

Før du dykker inn i håndtering av tastaturinnganger, sørg for at du har pip installert i enheten din. Bruk denne kommandoen for å installere arkadebiblioteket:

pip installer arkade

Deretter lager du skjelettet til et enkelt spill:

import arkade

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klasseMitt Spill(arkade. Vindu):
def__i det__(selv, bredde, høyde):
super().__init__(bredde, høyde, "Mitt spill")
arcade.set_background_color (arcade.color. HVIT)

defon_draw(selv):
arcade.start_render()

defOppdater(selv, delta_tid):
sende

MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

Dette skaper et vindu med hvit bakgrunn. Deretter legger du til en spiller i spillet ditt:

klasseSpiller:
def__i det__(selv, x, y):
selv.x = x
self.y = y
selv.hastighet = 5
self.radius = 20

deftegne(selv):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. BLÅ)

defgå til venstre(selv):
self.x -= self.speed

defFlytt til høyre(selv):
self.x += self.speed

defFlytte opp(selv):
self.y += self.speed

defflytte_ned(selv):
self.y -= self.speed

Dette skaper en enkel spiller med en blå sirkel. Du kan legge til denne spilleren i spillet ditt ved å endre Mitt Spill klasse:

import arkade

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480

klasseMitt Spill(arkade. Vindu):
def__i det__(selv, bredde, høyde):
super().__init__(bredde, høyde, "Mitt spill")
arcade.set_background_color (arcade.color. HVIT)
self.player = Spiller (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)

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

defOppdater(selv, delta_tid):
sende

defhoved-():
MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

hvis __navn__ == "__hoved__":
hoved()

Nå har du en spiller i spillet ditt som du kan tegne på skjermen.

Reagere på tastetrykk og utgivelser

For å svare på brukerinnspill i spillet ditt, må du håndtere tastetrykk og slipp. Arcade-biblioteket tilbyr to metoder for å håndtere disse hendelsene: on_key_press og on_key_release.

For å bruke disse metodene må du definere dem i din arkade. Vindu underklasse. Når spilleren trykker eller slipper en tast, vil arkade kjøre den tilsvarende metoden, og gi den to argumenter: tast og modifikatorer. nøkkel er et heltall som representerer nøkkelkoden til tasten som trykkes eller slippes. modifikatorer er et bitfelt som representerer alle modifikasjonstaster som spilleren også trykket, som Shift eller Control.

Her er et eksempel på hvordan du reagerer på et tastetrykk i spillet ditt:

klasseMitt Spill(arkade. Vindu):
defon_key_press(selv, nøkkel, modifikatorer):
hvis nøkkel == arkade.nøkkel. VENSTRE:
# Flytt spilleren til venstre
elif nøkkel == arkade.nøkkel. IKKE SANT:
# Flytt spilleren til høyre
elif nøkkel == arkade.nøkkel. OPP:
# Flytt spilleren opp
elif nøkkel == arkade.nøkkel. NED:
# Flytt spilleren ned

For å svare på nøkkelutgivelser kan du definere on_key_release metode på samme måte:

klasseMitt Spill(arkade. Vindu):
defon_key_release(selv, nøkkel, modifikatorer):
hvis nøkkel == arkade.nøkkel. VENSTRE:
# Slutt å flytte spilleren til venstre
elif nøkkel == arkade.nøkkel. IKKE SANT:
# Slutt å flytte spilleren til høyre
elif nøkkel == arkade.nøkkel. OPP:
# Slutt å flytte spilleren opp
elif nøkkel == arkade.nøkkel. NED:
# Slutt å flytte spilleren ned

Det er viktig å merke seg at fange brukerinndata i pygame krever manuell hendelseskontroll i spillsløyfen. På den annen side påkaller Arcade-biblioteket automatisk relevante metoder når spilleren trykker eller slipper en tast. Dette betyr at du ikke trenger å se etter nøkkelhendelser manuelt i spillsløyfen din, noe som sparer deg for bryet med ekstra kode.

Tilpasse tastaturinndatahåndtering for å passe spillets behov

Arcade-biblioteket gir mange måter å tilpasse tastaturinndata på. Det kan være lurt å endre nøkkelbindingene for spillet ditt eller la spilleren tilpasse sine egne nøkkelbindinger.

Du kan gjøre dette ved å definere en ordbok key_map som tilordner hver nøkkel til den tilsvarende metoden til spillerobjektet. For å la spilleren tilpasse nøkkelbindingene sine, kan du legge til en innstillingsmeny som endrer key_map ordbok basert på spillerens preferanser.

Her er et eksempel:

klasseMitt Spill(arkade. Vindu):
def__i det__(selv, bredde, høyde, tittel):
super().__init__(bredde, høyde, tittel)
self.player = Spiller(100, 100)

self.key_map = {
arcade.key. VENSTRE: self.player.move_left,
arcade.key. HØYRE: self.player.move_right,
arcade.key. OPP: self.player.move_up,
arcade.key. NED: self.player.move_down
}

defon_key_press(selv, nøkkel, modifikatorer):
hvis nøkkel i self.key_map:
self.key_map[key]()

defon_key_release(selv, nøkkel, modifikatorer):
hvis nøkkel i self.key_map:
self.key_map[tast + 1]()

Svar på brukerinndata i sanntid

Å svare på brukerinnspill i sanntid er et viktig aspekt ved å lage et engasjerende spill. Ved å ta deg tid til å håndtere tastaturinndata på riktig måte i spillet ditt, kan du lage en mer engasjerende og oppslukende opplevelse for spillerne dine, og til slutt få spillet ditt til å skille seg ut i en folkemengde markedsplass.