======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: [[python:pgzero:projekt2_quelltext|Projekt 2 - Super Mario - Quelltext]] 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. Wenn das passiert, wird der Score erhöht und die Münze an einer anderen Stelle platziert. clock.schedule(time_up, 20.0) Mit dieser Programmzeile wird festgelegt, wie lange das Programm läuft. =====Erkärvideo===== {{youtube>TyWeB2UK0_4}} =====Aufgaben===== **Aufgabe 1** Teste den Programmcode! Verändere die Laufzeit des Programms und die Geschwindigkeit von Mario! **Aufgabe 2** Erhöhe die Anzahl der Münzen die angezeigt werden. **Aufgabe 3** Lass zusätzlich andere Münzen oder Gegenstände anzeigen, für die Mario einen anderen Score bekommt. \\ ~~DISCUSSION | Hier können Fragen zum Inhalt der Seite gestellt werden. ~~