Racer Programmieren

Racer Programmieren

Beschreibung

In der Session wollen wir ein Rennspiel programmieren, das man an einem Computer mit 2 Spielern spielen kann. Den Racer programmieren wir mit Python und pygame, die Rennstrecke(n) bauen wir mit Tiled. Auf der Rennstrecke gibt es außerdem Hindernisse und die Spieler kollidieren auch untereinander. Nachdem x Runden absolviert wurden, gewinnt ein Spieler.

Ziel

Was sind die Ziele der Session?

  • Python
    • Grundlegende Python-Syntax
    • Einbindung und Verwendung von Bibliotheken
    • Kontrollstrukturen (If-Abfragen, while-Schleifen, for-Schleifen)
    • Aufbau und Verwendung von Klassen inkl. Vererbung
  • PyGame
    • Grundlegende Struktur eines 2D-Spiels mit PyGame
    • Verarbeitung von Benutzereingaben
    • Nutzung von Sprites und deren Interaktion
    • Erstellen von Spielern/Gegnern
    • Grundlegende Einbindung von Tiled Maps in pygame-Programme
  • Tiled
    • Maps erstellen
    • Maps mit PyGame verwenden
  • Git
    • Grundlegende Benutzung von git über die Kommandozeile
      • git add
      • git commit
      • git pull/push
    • Zusammenarbeit mit git
      • Branches
      • Commit-Messages

Art der Session

Welche Format soll die Session haben?

  • Experimentier-Session (alle gemeinsam probieren etwas Neues aus, was noch keiner so richtig kann)

Vorgehen

Termin Themenbereich Was soll gemacht werden?
1. Dezember Python Basics Grundlegende Funktionen (i.e print, input…), Kontrollfunktionen, Klassen/Funktionen schreiben
8. Dezember Pygame Basics & Vorbereitung Campdays Erstellen des Bildschirms, Klassen (Spieler usw.), Update, Bewegung… & Ist noch etwas unklar? Wollen wir etwas bei den Campdays machen?
15. Dezember Git Wie arbeitet man in git zusammen. Grundlegende Befehle
22. Dezember Programmieren Start der Programmierphase, wer macht was?
5. Januar Programmieren Programmierphase
12. Januar Programmieren Programmierphase
19. Januar Programmieren Programmierphase
26. Januar Programmieren Programmieren, Abfrage: Wie weit sind alle? Wollen/brauchen wir noch mehr Zeit?
2. Februar Programmieren & Abschluss Abschluss des Projekts, letzte Feinschliffe, Dokumentation, Feedback, Follow-Up-Session?

Zeit und Ort

Wann und wo soll die Session/ die Sessions stattfinden?

Teilnehmende

Bereits erledigt

Was ist bisher passiert? Welche Aufgaben wurden bisher erledigt?

  • Terminabstimmung erledigt
  • Einführung in Python

Nächsten Schritte

Was passiert als nächstes? Was sind die nächsten Aufgaben?

  • Einführung in pygame
2 Likes

Wäre es sinnvoll, das mit @greenem’s Wunsch, mehr Python zu lernen, zu verknüpfen?

Was meinst du @greenem, wäre das was für dich, hier mitzumachen, statt eines separaten Workshops?

Session-Redaktion: Ziele, Format, usw. definieren

Können wir machen.

Terminabstimmung

Bitte stimmt hier ab, wann ihr Zeit hättet, euch für eine regelmäßige Session (ca. 1h, vllt. mal mehr mal weniger)zu treffen. Der Starttermin richtet sich dann danach, wie lange ich die Abstimmung offen halte.

  • Montag, 17:30
  • Mittwoch, 17:30
  • Donnerstag, 16:30
  • Donnerstag, 18:30
  • Freitag, 16:00
  • Freitag, 17:00
  • Freitag, 17:30

0 Teilnehmer

Hallo @robert,
schau mal, dass du den ersten Beitrag basierend auf dem neuen Template anpasst.

Hi @justus ,

was hast Du denn am Montag und Donnerstag für einen Termin? Wäre es möglich, dass Du ggf. ein paar Minuten später kommst?

Donnerstags habe ich Klavier-Unterricht, da ginge es bei mir eher als montags. Es könnte nur sein, dass ich etwas später komme.

Dann machen wir unsere Session immer am Donnerstag um 17:30 (d Den erste Termin würde ich für nächste Woche, den 2022-11-24T16:30:00Z2022-11-24T17:30:00Z ansetzen.

Hallo,
ich kann am 15.12 leider nicht teilnehmen da wir an dem Tag in Kur fahren.
Aber am 22.12 bin ich wieder dabei.

Hi,

sorry für die verspätete Information. Gestern fand kein Meeting statt, weil ich da leider verhindert war. Der neue Starttermin ist der, der im Originalpost steht (also der 1. Dezember). Entschuldigung, dass das für Verwirrung gesorgt hat!

Einführung in Python

Heute haben wir uns mit den Python-Grundlagen beschäftigt. Dazu gab es zwei Teile.

Lotto

Zuerst haben wir ein ‘Lotto-Spiel’ programmiert. Es werden 6 zufällige Zahlen zwischen 1 und 49 gezogen und 6 Nutzereingaben abgefragt. Aus den beiden Datensets wurde die Übereinstimmung ermittelt. Da haben wir uns unter anderem beschäftigt mit:

  • Random
  • Eingaben & Values
  • Kontrollstrukturen (Schleife [for/while], if-Abfragen)
  • Datentypen
    • Speziell Listen/Sets

Der kommentierte Code findet sich hier:

# Lotto
# Generieren von zufällige Zahlen ohne Duplikate
# Abfrage, ob die Zahlen stimmen
# Userinput 
import random

print("Hallo. Heute spielen wir Lotto (6 aus 49)! Bitte gib 6 Zahlen zwischen 1 und 49 ein")
# Datenmengen für Userinput und Loesungsmenge
# Eingabe als Liste -> Duplikate sind theoretisch zulässig, die Liste ist geordnet (in dem Fall egal)
eingabe = []
# Die Loesungsmenge ist ein Set. -> es gibt keine Duplikate, die Liste ist ungeordnet (in dem Fall egal)
loesung = set()
# Die Anzahl der richtigen Antworten
richtige_zahlen = 0

# Der Code wird 6 mal ausgeführt -> for-Schleife
for i in range(1,7):
    # Fragen wir eine Zahl ab
    inp = int(input(f"Zahl {i}:"))
    # Einfügen in die Liste
    eingabe.append(inp)
    
# Da Sets keine Dopplungen zulassen, müssen wir überprüfen, wie lang das Set ist
# und die Operation so oft durchführen bis es 6 Zahlen sind
while len(loesung) != 6:
    #Generieren von Zufallszahlen
    richtig = random.randint(1, 49)
    #Die Zufallszahl wird hinzugefügt.
    loesung.add(richtig)

for glueckszahl in loesung:
    for zahl in eingabe:
        #Wir checken jede Zahl in den Lösungen gegen jede Eingabe
        if zahl == glueckszahl:
            #Falls es eine Übereinstimmung gibt, erhöhe Score um 1
            richtige_zahlen += 1
print(richtige_zahlen)
print(loesung)

Klassen und Funktionen

Danach haben wir uns noch mit Klassen und Funktionen beschäftigt und wie Funktionen von Klassen erben. Wir haben ein Auto ‘gebauen’ mit den Attributen Marke, Modell und Farbe und einer Funktion, die die Farbe individuell setzen kann.
Der Code findet sich hier:

#Erstellen der Klasse
class Auto():
    #Zuweisung der Originalattribute
    def __init__(self, farbe):
        self.marke = "VW"
        self.model = "Käfer"
        self.farbe = farbe
   #Eine Funktion, die die Marke nachträglich setzen kann 
   def set_marke(self, marke):
        self.marke = input("Was soll die Marke sein?")

# Beispiel einer alleinstehenden Funktion
def drucken(text):
    print(text)

# Erstellen von 3 Objekten
auto1 = Auto("Silber")
auto2 = Auto("Rot")
auto3 = Auto("Gelb")