Du tror du tegner objektene bare én gang
Handler om: Spilløkke
Du tror at når du har tegnet et objekt på skjermen, blir det stående der. Men i en spilløkke må du tegne ALT på nytt hvert eneste bilde — etter at du har tømt skjermen. Glemmer du å tømme, smører gamle posisjoner utover som en hale; glemmer du å tegne på nytt inni løkka, ser du ingenting bevege seg.
Eksempel
Du tegner ballene før while-løkka og lar løkka bare flytte dem. Tallene (x, y) endrer seg, men bildet på skjermen oppdateres aldri — så det ser ut som ingenting skjer.
Slik tenker du riktig om det
Tenk på spilløkka som en tegnefilm: hvert bilde er en ny tegning. Rutinen er alltid den samme tre-takt: tøm skjermen → oppdater alle objekter → tegn alle på nytt. Tegning hører hjemme INNI løkka, ikke før den.
Slik ser det ut i kode
Slik gikk det galt
# tegner ballene FOER loekka - bare en gang
for ball in baller:
ball.tegn(skjerm)
while spiller:
for ball in baller:
ball.flytt() # de flytter seg, men skjermen oppdateres aldri Slik fikser du det
while spiller:
skjerm.fill((0, 0, 0)) # 1) toem skjermen hvert bilde
for ball in baller:
ball.flytt() # 2) oppdater tilstand
ball.tegn(skjerm) # 3) tegn paa nytt hvert bilde
pygame.display.flip()