Racer Programmieren

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")

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?

Hi lian,
sorry ich hab deine Nachricht gerade erst gesehen. Das geht klar so und ist notiert!

Gestern haben wir damit begonnen das eigentliche Spiel zu programmieren. Um das zu machen gibt es im wesentlichen zwei verschiedene ToDos:

  1. 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.)
  2. 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).

da wir aus der Kur zurück fahren kann ich leider am 21.1. nich teilnehmen :frowning:

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).

0 Teilnehmer

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).

Ich hätte Interesse an zumindest zwei weiteren Stunden, wo wir zum Beispiel eine Map-Selection einbauen würden. Vielleicht könnten wir auch noch die Anzahl der Runden anzeigen und eine Art Zeitrennen programmieren. Vielleicht könnte man auch noch Booster einbauen, die man eventuell vor dem Starten des Spiels an- oder ausschalten kann. Das einfach nur so als Ideen in den Raum geworfen.

Ist das etwas, das du gezielt lernen möchtest, oder sind das Dinge, die du schon kannst und einfach “nur” machen willst, damit das Spiel besser wird?

Letzteres könnte man ja auch asynchron machen.

Ich würde die Session gerne zu Ende bringen. Dazu würde ich gerne die Lernergebnisse sichern.

Macht doch noch eine Abschluss-Session, bei der ihr alle Inhalte der Reihe nochmal wiederholt und sicherstellt, dass die Lernziele erreicht wurden. Danach würde ich mir ein paar Sachen dann mal von @greenem und @krfl9500 beibringen lassen ;).

@robert sollte vorher nochmal mit @lg-didaktik die Lernziele besprechen.

In Ordnung. Dann würde ich den Termin für die Abschluss-Session für nächste Woche Donnerstag 17:30 ansetzen.

Die Lernziele habe ich heute nochmal mit der LG Didaktik besprochen und den Termin geplant.

Dinge, die ich noch nicht kann und gerne lernen würde (Maps laden und Text anzeigen. Booster würde ich hinbekommen).

1 „Gefällt mir“

Heute haben wir den Abschlusstermin gemacht und nochmal das nötige reviewt, Fragen geklärt usw. Nun muss noch ausführlich über die gesamte Session berichtet werden.