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.
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.
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:00Z→2022-11-24T17:30:00Z ansetzen.
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!
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:
# 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")
Ich gehe Donnerstags immer zum Sport, und das Endet um 17:30 (manchmal endet das Training aber auch früher), daher würde ich an den Terminen etwas später hinzustoßen (spätestens 18:00 Uhr). Geht das klar?
Gestern haben wir damit begonnen das eigentliche Spiel zu programmieren. Um das zu machen gibt es im wesentlichen zwei verschiedene ToDos:
Wir müssen uns überlegen, wie man das Spiel aufbauen sollte und das dann umsetzen (wollen wir ein “Rennen gegen die Zeit” oder doch lieber Mehrspieler? Wir zählen wir die Runden? usw usw.)
Wir brauchen eine Tiled-Karte als Strecke und müssen diese entsprechend in das Spiel einbinden (bspw. falls der Spieler gegen eine Wand fährt, muss diese Wand auch solide sein)
Dazu haben wir uns in Gruppen aufgeteilt, damit das gleichzeitig angegangen werden kann. In Tiled haben wir uns schonmal entsprechende Ressourcen herausgesucht und begonnen, die Karte zu bauen. Andererseits haben wir auch schon die ersten paar Zeilen Code geschrieben um einen Bildschirm und einen Spieler zu erstellen (der Hintergrund dieses Bildschirms wird erstmal Einfarbig sein, da er eh ersetzt wird).
Wir haben uns heute darauf geeinigt, dass wir uns nächste Woche nochmal treffen um Bugfixing zu betreiben und den diesmal wirklich letzten Schliff zu machen ;).
Entschuldigung dass ich bei den letzten zwei malen nicht dabei war: beim ersten mal hab ich es vergessen und beim zweiten mal war ich beim Probetraining vom Judo. Am 9.März feiert meine Schwester Geburtstag und da habe ich leider auch keine Zeit
Leider haben wir eigentlich schon das Ende unseres Programmierprojektes erreicht. Das Spiel ist auf Edugit zu finden und auch ganz gut gelungen.
Jetzt ist die Frage wie wir weiter verfahren wollen. Nehmt dazu bitte einmal an der Umfrage teil.
Ich möchte das Projekt noch weiter fortführen (Neue Features gehen immer, dann wird das hier eben der voellig overengineerte Racer)
Ich möchte ein neues Projekt starten (In der ersten Session hatten wir die Idee mit dem Jump’n’Run. Das wieder aufgreifen?)
Ich finde wir sollten hier einen Cut setzen und später weitermachen (entweder mit diesen oder dann einem neuen Projekt).
0Teilnehmer
Bei der Frage ob wir sofort mit einem neuen Projekt wieder durchstarten haben natürlich auch noch die Sessionleiter ein Wörtchen mitzureden, die explizit darauf gewartet haben, dass diese Session endet. Ich denke da vorallem an die Gameshow-Inputs (@mwinter) und den selbstgebauten Computer (@krfl9500).