Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~~NOTOC~~ ====== Spielprogrammierung mit PyGame ====== <code python> def schreibe(s, x, y, farbe = "white", groesse = 32): font = pygame.font.Font(None, groesse) text = font.render(s, True, farbe, "black") text_rechteck = text.get_rect() text_rechteck.center = (x, y) fenster.blit(text, text_rechteck) </code> ===== Fertig-programmierte Spiele ===== * Solo-Pong, 2eNP (nur wenige Zeilen haben gefehlt): {{ :lehrkraefte:snr:informatik:glf23:python:solo-pong-2enp.py |}} * Solo-Pong, 2pg (der Fehler war: Versehentlich ''ballrichtung'' statt ''ballgeschwindigkeit'' in Zeile 89 geschrieben (was eine neue, nicht weiter verwendete Variable kreiert hat); hier das funktionsfähige Programm mit "diagonal" fliegendem Ball: {{ :lehrkraefte:snr:informatik:glf23:python:pong-solo-2pg.py |}} ===== Bibliothek Pygame (python game library) installieren ===== <hidden> <WRAP center round box> Öffne die Anwendung/App "Eingabeaufforderung" (= "command prompt" = "Befehlszeile", auf manchen Schul-Windows-Rechnern muss man "cmd" suchen). Gib dort den Befehl ''pip install pygame'' ein, gefolgt von ''Enter'': (''pip'' ist ein Paketverwaltungsprogramm für Python; pip ist ein Akronym für "pip installs packages", vgl. [[https://de.wikipedia.org/wiki/Pip_(Python)|]]) {{:lehrkraefte:snr:informatik:glf22:python:install-pygame.png?800|}} Bei Problemen: Vielleicht klappt das Folgende (nicht getestet): Probiere es mit ''python -m pip install pygame''. Auf Apple-Rechnern im Terminal ''pip3 install pygame'' eingeben. Auf manchen Windows-Rechnern machten vermutlich mehrere Python-Versionen Probleme; jedenfalls hat die Deinstallation aller Python-Versionen und Neuinstallation von Python geholften. </WRAP> </hidden> <!-- Ideen: pygame installieren Ideen: Kleine Einzelprogramme, eines davon ausführlich erklären: * (quadratische) Box bewegen, ein Feld pro Tastendruck * zwei Pfeiltasten erklären (eventuell bewusst falsch), * auf einer Seite das Verlassen des Feldes verbieten * evtl. Punkt verteilen, wenn man etwas erreicht? etwa Apfel an Zufallsposition; Punktestand anzeigen * Rest machen S selbst (andere Pfeiltasten, andere Ränder) * Box bewegen, Bewegung, solange Taste gedrückt * Box bewegen, Bewegungsänderung per Tastendruck, Box bewegt sich ständig * rechteckige Box bewegen (als Vorstufe zu Pong) * zwei Boxen bewegen, Check auf Kollision per Funktion * Mausklick, Koordinaten erhalten * Ball, der reflektiert wird * zweiten Ball programmieren lassen * S schreiben Pong oder Breakout o.ä. ball and paddle * Snake? Feste Länge? oder per Liste! * fehlerhafte Programme zur Verfügung stellen --> ===== Einführung am Beispiel: Solo-Pong vertikal ===== <WRAP center round todo 100%> Gemeinsames angeleitetes Programmieren: Solo-Pong, Schritt für Schritt. Letzten Schritt eventuell nicht erkären, damit man das Denken nicht ganz verlernt. Vorlage für Lehrer, eigentlich benötigt man nur die ersten beiden Seiten: {{ :lehrkraefte:snr:informatik:glf23:python:latex-pong-solo-fuer-lektion.pdf |}} </WRAP> ===== Aufgabe: Pong für zwei Spieler ===== <WRAP center round todo> Schreibe "Pong für zwei Spieler", Paddles am linken und rechten Spielfeldrand, Spielstand anzeigen. Der linke Spieler steuert beispielsweise mit den Tasten "s" und "w" nach oben und unten, der rechte mit den entsprechenden Pfeiltasten. </WRAP> ===== Aufgabe: Eigenes Spiel schreiben ===== <WRAP center round todo> Schreibe ein eigenes Spiel (oder verbessere das gemeinsam programmierte Solo-Pong)! Vorschläge: * Bewege ein Quadrat mit Hilfe der Pfeiltasten in alle vier Richtungen; sammle dabei "Äpfel" auf, die an zufälligen Orten entstehen; wer Listen kennt, kann versuchen, Snake zu programmieren * Zwei Spieler, jeder bewegt ein Quadrat (mit wasd bzw. Pfeiltasten); der eine muss den anderen fangen * Solo-Pong erweitern: * variabler Flugwinkel des Balls, zum Beispiel beim Abprall am Rand des Paddle * zwei Bälle * Spielgeschwindigkeit steigt * Bonus-Leben, wenn man zufällig erzeugte Punkte trifft * Breakout (dazu sollte man Listen kennen) </WRAP> ===== Link zur Kursseite ===== [[lehrkraefte:snr:informatik:glf23|Zur Kursseite]] lehrkraefte/snr/informatik/glf23/python/pygame.txt Last modified: 2023/12/20 09:44by Olaf Schnürer