Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Projekt 2 - Super Mario
Im Projekt 2 wollen wir unsere Spielfigur bewegen. „Super Mario“ soll Münzen sammeln. Die Spielzeit soll begrenzt werden und am Ende soll ein Punktestand angezeigt werden.
Vorbereitungen
Zunächst legen wir ein Projektverzeichnis (z.B.supermario) an. Im Projektverzeichnis muss sich Unterverzeichnis images mit den Bildern mario.png und money.png befinden. Die Bilder können wieder hier: https://icons8.de/icon/set/characters/color heruntergeladen werden.
Beschreibung des Programms
Zu nächst des gesamte Programm:
- mario.py
from random import randint WIDTH = 600 HEIGHT = 600 score = 0 game_over = False mario = Actor("mario.png") mario.pos = 100, 100 coin = Actor("money.png") coin.pos = 200, 200 def draw(): screen.fill("green") mario.draw() coin.draw() screen.draw.text("Punkte: " + str(score), color="black", topleft=(10, 10)) if game_over: screen.fill("pink") screen.draw.text("Endstand:" + str(score), topleft=(10, 10), fontsize = 60) def place_coin(): coin.x = randint(20, (WIDTH-20)) coin.y = randint(20, (HEIGHT-20)) def time_up(): global game_over game_over = True def update(): global score if keyboard.left: mario.x = mario.x - 4 elif keyboard.right: mario.x = mario.x + 4 elif keyboard.up: mario.y = mario.y - 4 elif keyboard.down: mario.y = mario.y + 4 coin_collectet = mario.colliderect(coin) if coin_collectet: score = score + 10 place_coin() clock.schedule(time_up, 20.0) place_coin()
Mit der Zeile
from random import randint
werden die Funktionen für Zufallszahlen eingebunden.
Mit
WIDTH = 600 HEIGHT = 600 score = 0 game_over = False
werden einige globale Konstanten bzw. Variablen festgelegt. WIDTH
und HEIGHT
legen die Größe des Spielfensters fest In score
wird der Punktestand abgespeichert, game_over
wird auf True
gesetzt, wenn die Zeit abgelaufen ist.
Mit
mario = Actor("mario.png") mario.pos = 100, 100 coin = Actor("money.png") coin.pos = 200, 200
werden die Akteure des Spiels definiert.
def draw(): screen.fill("green") mario.draw() coin.draw() screen.draw.text("Punkte: " + str(score), color="black", topleft=(10, 10)) if game_over: screen.fill("pink") screen.draw.text("Endstand:" + str(score), topleft=(10, 10), fontsize = 60)
Mit der Funktion draw()
werden die Akteure auf den Bildschirm gezeichnet und die Bildschirmfarbe auf grün gesetzt. Wenn das Spiel vorbei ist, wird die Farbe des Bildschirms geändert und der Spielstand angezeigt.
def place_coin(): coin.x = randint(20, (WIDTH-20)) coin.y = randint(20, (HEIGHT-20))
Mit der Funktion place_coin()
wird die Münze an einer zufälligen Stelle auf dem Bildschirm platziert.
def time_up(): global game_over game_over = True
Die Funktion time_up()
setzt die Variable game_over()
auf True
.
def update(): global score if keyboard.left: mario.x = mario.x - 4 elif keyboard.right: mario.x = mario.x + 4 elif keyboard.up: mario.y = mario.y - 4 elif keyboard.down: mario.y = mario.y + 4 coin_collectet = mario.colliderect(coin) if coin_collectet: score = score + 10 place_coin()
Die Funktion update()
ist eine in Pygamezero vordefinierte Funktion. Sie wird sechszig mal pro Sekunde ausgeführt.
Mit der if-elif-Anweisung wird auf die Pfeiltasten der Tastatur reagiert. Die Position von Mario wird dann entsprechend verändert coin_collected
wird auf True
gesetzt, wenn Mario und die Münze kollidieren.
Hier können Fragen zum Inhalt der Seite gestellt werden.