Du tror spillet venter på tastetrykk (som input())

Handler om: Hendelser og styring (input)

Spilløkka går hele tiden — 60 ganger i sekundet — uansett om noen taster. Styring leses derfor med pygame.key.get_pressed() INNI flytt(): «holdes tasten nede akkurat nå?». input() ville STOPPET hele spillet og ventet på Enter — derfor brukes den aldri i en spilløkke.

Eksempel

En elev legger retning = input("Hvilken vei? ") i flytt() — og spillet fryser til noe skrives i terminalen.

Slik tenker du riktig om det

Snu spørsmålet: spillet spør IKKE «hva vil du?» og venter — det spør «holdes tasten nede akkurat nå?» hver eneste frame. Løkka går; styringen er en avlesning, ikke en samtale.

Slik ser det ut i kode

Slik gikk det galt

def flytt(self):
    retning = input("Hvilken vei? ")   # fryser spillet!

Slik fikser du det

def flytt(self):
    taster = pygame.key.get_pressed()
    if taster[pygame.K_LEFT]:
        self.x = self.x - self.fart

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala