At reagere på input er afgørende for ethvert spil, og det er godt at understøtte tastaturet for brugere, der foretrækker det. Find ud af hvordan med Pythons arkadebibliotek.
Tastaturinput er en væsentlig del af spiludvikling, og det er afgørende at håndtere det effektivt for at give en god brugeroplevelse. Arcade-biblioteket giver en ligetil og effektiv måde at håndtere tastaturinput i dine Python-spil.
Oprettelse af et simpelt spil med en spiller
Du kan finde den komplette kode i denne GitHub-repo.
Før du dykker ned i håndtering af tastaturinput, skal du sørge for, at du har pip installeret i din enhed. Brug denne kommando til at installere arkadebiblioteket:
pip installere arkade
Derefter skal du skabe skelettet af et simpelt spil:
importere arkade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde, "Mit spil")
arcade.set_background_color (arcade.color. HVID)defon_draw(selv):
arcade.start_render()defopdatering(selv, delta_tid):
passere
Mit spil (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
Dette skaber et vindue med en hvid baggrund. Tilføj derefter en spiller til dit spil:
klasseSpiller:
def__i det__(selv, x, y):
selv.x = x
self.y = y
selv.hastighed = 5
selv.radius = 20deftegne(selv):
arcade.draw_circle_filled (self.x, self.y, self.radius, arcade.color. BLÅ)defbevæg dig til venstre(selv):
self.x -= selv.hastigheddefmove_right(selv):
self.x += self.speeddefrykke_op(selv):
self.y += self.speed
defFlyt ned(selv):
self.y -= self.speed
Dette skaber en simpel spiller med en blå cirkel. Du kan tilføje denne spiller til dit spil ved at ændre Mit Spil klasse:
importere arkade
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde):
super().__init__(bredde, højde, "Mit spil")
arcade.set_background_color (arcade.color. HVID)
self.player = Spiller (SCREEN_WIDTH // 2, SCREEN_HEIGHT // 2)defon_draw(selv):
arcade.start_render()
self.player.draw()defopdatering(selv, delta_tid):
passeredefvigtigste():
Mit spil (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()
hvis __navn__ == "__main__":
hoved()
Nu har du en spiller i dit spil, som du kan tegne på skærmen.
Reaktion på tastetryk og frigivelser
For at reagere på brugerinput i dit spil skal du håndtere tastetryk og frigivelser. Arcade-biblioteket tilbyder to metoder til at håndtere disse begivenheder: on_key_press og on_key_release.
For at bruge disse metoder skal du definere dem i din arkade. Vindue underklasse. Når spilleren trykker på eller slipper en tast, vil arcade køre den tilsvarende metode og sende den to argumenter: tast og modifikatorer. nøgle er et heltal, der repræsenterer nøglekoden for den trykte eller frigivne tast. modifikatorer er et bitfelt, der repræsenterer alle modifikationstaster, som afspilleren også trykkede på, f.eks. Shift eller Control.
Her er et eksempel på, hvordan du reagerer på et tastetryk i dit spil:
klasseMit Spil(arkade. Vindue):
defon_key_press(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. VENSTRE:
# Flyt spilleren til venstre
elif nøgle == arkade.nøgle. HØJRE:
# Flyt spilleren til højre
elif nøgle == arkade.nøgle. OP:
# Flyt afspilleren op
elif nøgle == arkade.nøgle. NED:
# Flyt afspilleren ned
For at reagere på nøgleudgivelser kan du definere on_key_release metode på samme måde:
klasseMit Spil(arkade. Vindue):
defon_key_release(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. VENSTRE:
# Stop med at flytte spilleren til venstre
elif nøgle == arkade.nøgle. HØJRE:
# Stop med at flytte spilleren til højre
elif nøgle == arkade.nøgle. OP:
# Stop med at flytte spilleren op
elif nøgle == arkade.nøgle. NED:
# Stop med at flytte afspilleren ned
Det er vigtigt at bemærke, at fange brugerinput i pygame kræver manuel hændelseskontrol i din spilløkke. På den anden side påberåber Arcade-biblioteket automatisk relevante metoder, når afspilleren trykker på eller slipper en tast. Dette betyder, at du ikke manuelt behøver at tjekke for nøglebegivenheder i din spilløkke, hvilket sparer dig for besværet med ekstra kode.
Tilpasning af tastaturinputhåndtering, så den passer til dit spils behov
Arcade-biblioteket giver mange måder at tilpasse tastaturinput på. Du ønsker måske at ændre nøglebindingerne for dit spil eller give spilleren mulighed for at tilpasse deres egne nøglebindinger.
Du kan gøre dette ved at definere en ordbog key_map der knytter hver nøgle til den tilsvarende metode for spillerobjektet. For at give afspilleren mulighed for at tilpasse deres nøglebindinger, kan du tilføje en indstillingsmenu, der ændrer key_map ordbog baseret på spillerens præferencer.
Her er et eksempel:
klasseMit Spil(arkade. Vindue):
def__i det__(selv, bredde, højde, titel):
super().__init__(bredde, højde, titel)
self.player = Player(100, 100)self.key_map = {
arkade.nøgle. VENSTRE: self.player.move_left,
arkade.nøgle. HØJRE: self.player.move_right,
arkade.nøgle. OP: self.player.move_up,
arkade.nøgle. NED: self.player.move_down
}defon_key_press(selv, nøgle, modifikatorer):
hvis nøgle i self.key_map:
self.key_map[key]()
defon_key_release(selv, nøgle, modifikatorer):
hvis nøgle i self.key_map:
self.key_map[tast + 1]()
Reager på brugerinput i realtid
At reagere på brugerinput i realtid er et væsentligt aspekt af at skabe et engagerende spil. Ved at tage dig tid til korrekt at håndtere tastaturinput i dit spil, kan du skabe en mere engagerende og fordybende oplevelse for dine spillere, og i sidste ende få dit spil til at skille sig ud i en overfyldt markedsplads.