12+ år
Øvet
⏱ 1-2 timer
Lav dit eget retrospil: Snake
Programmér klassikeren Snake i Python med Pygame Zero – slangen vokser, hver gang den spiser.

Snake var et af de første spil på mobiltelefoner. Det er perfekt at kode selv, fordi det bruger nogle af de vigtigste idéer i programmering: lister, løkker og kollisioner.
Sådan gør du
- Installér Python og Pygame Zero: skriv
pip install pgzeroi en terminal (eller brug editoren Mu, hvor det er indbygget). - Gem koden nedenfor som snake.py, og kør den med
pgzrun snake.py. - Styr slangen med piletasterne. Den lyserøde firkant er mad.
- Forstå koden: slangen er en liste af felter. Hver gang den bevæger sig, får den et nyt hoved – og mister halen, medmindre den har spist.
Eksempel (Pygame Zero)
import random
WIDTH, HEIGHT = 400, 400
CELLE = 20
slange = [(10, 10)]
retning = (1, 0)
mad = (5, 5)
point = 0
slut = False
def flyt():
global mad, point, slut
if slut:
return
hoved = (slange[0][0] + retning[0], slange[0][1] + retning[1])
if hoved in slange or not (0 <= hoved[0] < 20 and 0 <= hoved[1] < 20):
slut = True
return
slange.insert(0, hoved)
if hoved == mad:
point += 1
mad = (random.randint(0, 19), random.randint(0, 19))
else:
slange.pop()
def on_key_down(key):
global retning
if key == keys.LEFT: retning = (-1, 0)
if key == keys.RIGHT: retning = (1, 0)
if key == keys.UP: retning = (0, -1)
if key == keys.DOWN: retning = (0, 1)
def draw():
screen.fill((20, 20, 40))
for x, y in slange:
screen.draw.filled_rect(Rect(x * CELLE, y * CELLE, CELLE - 2, CELLE - 2), (132, 204, 22))
screen.draw.filled_rect(Rect(mad[0] * CELLE, mad[1] * CELLE, CELLE - 2, CELLE - 2), (236, 72, 153))
screen.draw.text(f'Point: {point}', (10, 10))
if slut:
screen.draw.text('GAME OVER', center=(200, 200), fontsize=60)
clock.schedule_interval(flyt, 0.15)
🧠 Udfordring – prøv selv
Gør slangen hurtigere for hver 5 point, og gem den højeste score i en fil, så den huskes til næste gang.