diff --git a/New Piskel.zip b/New Piskel.zip new file mode 100644 index 0000000..74bbeb3 Binary files /dev/null and b/New Piskel.zip differ diff --git a/item.py b/item.py new file mode 100644 index 0000000..2087962 --- /dev/null +++ b/item.py @@ -0,0 +1,12 @@ +class Item: + def __init__ (self, name, farbe, strength, function): #der Konstruktor + self.name = name + self.farbe = farbe + self.strength = strength + self.function = function + + def use(self, kart): + if self.function == 1: + kart.vel = kart.vel + self.strength + if self.function == 0: + kart.vel = kart.vel - self.strength \ No newline at end of file diff --git a/kart.py b/kart.py new file mode 100644 index 0000000..a55395a --- /dev/null +++ b/kart.py @@ -0,0 +1,19 @@ +class Kart: + def __init__ (self, name, farbe, v_max, vel): #der Konstruktor + self.name = name + self.farbe = farbe + self.v_max = v_max + self.vel = vel + + def __str__(self): + return "Das Kart heißt: " + self.name + + def beschleunigen(self): + self.vel = self.vel +5 + + def uderzac(self, knilch): #Rammen + self.vel = self.vel -2 + knilch.vel = knilch.vel -3 + + def ukubremha(self): #Bremsen + self.vel = self.vel -4 \ No newline at end of file diff --git a/konto/konto.py b/konto/konto.py new file mode 100644 index 0000000..fc54ece --- /dev/null +++ b/konto/konto.py @@ -0,0 +1,33 @@ +class Konto(object): + def __init__(self, nummer): + self.__nr = nummer + self.__stand = 0.0 + self.__inhaber = None + self.__minimum = -1000.0 + + def einzahlen(self, betrag): + self.__stand = self.__stand + betrag + + def auszahlen(self, betrag): + if self.__stand - betrag >= self.__minimum: + self.__stand = self.__stand - betrag + else: + print("Auszahlung nicht möglich!") + + def getNr(self): + return print(f"Die Kontonummer ist: {self.__nr}") + + def getStand(self): + return print(f"Die Kontonstand ist: {self.__stand}") + + def setStand(self, stand): + if stand >= self.__minimum: + self.__stand = stand + else: + print("Initialisierung nicht möglich!") + + def getMinimum(self): + return self.__minimum + + def setMinimum(self, minimum): + self.__minimum = minimum \ No newline at end of file diff --git a/konto/starten.py b/konto/starten.py new file mode 100644 index 0000000..f2b6de8 --- /dev/null +++ b/konto/starten.py @@ -0,0 +1,6 @@ +from konto.konto import Konto +k = Konto(3) +k.getNr() + +k.setStand(500.0) +k.getStand() diff --git a/schatzsuche/knoten.py b/schatzsuche/knoten.py new file mode 100644 index 0000000..eb763b4 --- /dev/null +++ b/schatzsuche/knoten.py @@ -0,0 +1,5 @@ +class Knoten: + def __init__(self, data): + self.data = data + self.next = None + diff --git a/schatzsuche/liste.py b/schatzsuche/liste.py new file mode 100644 index 0000000..ae58de8 --- /dev/null +++ b/schatzsuche/liste.py @@ -0,0 +1,12 @@ +from knoten import Knoten + +k1=Knoten(1) +print(k1.data) +k2=Knoten(2) +print(k2.data) + +k1.next=k2 +print("--") + +print(k1.next.data) +print(k2.data) \ No newline at end of file diff --git a/schlange/schlange.py b/schlange/schlange.py new file mode 100644 index 0000000..2256907 --- /dev/null +++ b/schlange/schlange.py @@ -0,0 +1,35 @@ +class Schlange(object): + def __init__(self): + self.__liste = [] + self.__anzahl = 0 + + def istLeer(self): + if self.__anzahl == 0: + return True + else: + return False + + def mitLetztem(self, element): + self.__liste = self.__liste + [element] + self.__anzahl = self.__anzahl + 1 + + def ohneErstes(self): + if not self.istLeer(): + self.__liste = self.__liste[1:] + self.__anzahl = self.__anzahl - 1 + + def erstes(self): + if self.istLeer(): + return None + else: + return self.__liste[0] + + def anzahlElemente(self): + return self.__anzahl + + def getSchlange(self): + return self.__liste + + def setSchlange(self, liste): + self.__liste = liste + self.__anzahl = len(self.__liste) \ No newline at end of file diff --git a/schlange/starten_schlange.py b/schlange/starten_schlange.py new file mode 100644 index 0000000..4a980b1 --- /dev/null +++ b/schlange/starten_schlange.py @@ -0,0 +1,8 @@ +from schlange import Schlange +s = Schlange() +#s.liste = s.liste + [3] +print(s.getSchlange()) +print(s.istLeer()) +s.mitLetztem(3) +print(s.getSchlange()) +print(s.istLeer()) \ No newline at end of file diff --git a/test_kart.py b/test_kart.py new file mode 100644 index 0000000..b63a745 --- /dev/null +++ b/test_kart.py @@ -0,0 +1,31 @@ +from kart import Kart +from item import Item +#name, farbe, v_max, speed +kart1 = Kart("Moio", "magenta", 70, 35) +kart3 = Kart("Thomas", "gelb", 60, 30) +Hamburger = Item("Hamburger", "grün", 5, 1) +Carrot = Item("Carrot", "orange", 10, 0) + +print(kart1.vel) +print(kart3.vel) + +kart1.beschleunigen() +kart3.beschleunigen() + +print(kart1.vel) +print(kart3.vel) + +kart1.uderzac(kart3) + +print("alt1") +print(kart1.vel) +print("alt3") +print(kart3.vel) + +Hamburger.use(kart1) +Carrot.use(kart3) + +print("neu1") +print(kart1.vel) +print("neu3") +print(kart3.vel) \ No newline at end of file diff --git a/tippen.py b/tippen.py new file mode 100644 index 0000000..923f0d4 --- /dev/null +++ b/tippen.py @@ -0,0 +1,158 @@ + +import time +import tkinter as tk + +# Konstanten für die physikalische Umrechnung (laut unserer Formel) +# 1 Anschlag = 0.0025 Meter auf dem Bildschirm +# 7 Knoten = 3.6 Meter/Sekunde = 1440 Anschläge/Sekunde +# Daraus ergibt sich der Umrechnungsfaktor: Knoten = (Anschläge_pro_Sekunde * 0.0025) / 0.51444 +METER_PRO_ANSCHLAG = 0.5 +KNOTEN_IN_MPS = 0.51444 # 1 Knoten = 0.51444 m/s + + +class BootTipptest: + + def __init__(self, root): + self.root = root + self.root.title("Der maritime 7-Knoten-Tipptest ⛵") + self.root.geometry("800x500") + self.root.configure(bg="#e0f7fa") + + # Test-Text + self.test_text = "Seemannsgarn oder Weltrekord? Wer mit sieben Knoten auf der Tastatur tippen will, muss die Finger fliegen lassen wie der Wind auf hoher See. Ahoi und feuer frei!" + + self.start_zeit = None + self.tippen_aktiv = False + + # UI Elemente bauen + self.create_widgets() + + def create_widgets(self): + # Titel + title = tk.Label( + self.root, + text="Der maritime Tipp-O-Meter", + font=("Arial", 20, "bold"), + bg="#e0f7fa", + fg="#006064", + ) + title.pack(pady=10) + + # Der Text, den man abtippen muss + text_label = tk.Label( + self.root, + text=self.test_text, + font=("Arial", 12, "italic"), + wraplength=700, + bg="#ffffff", + fg="#37474f", + bd=2, + relief="groove", + padx=10, + pady=10, + ) + text_label.pack(pady=10) + + # Das "Meer" (Canvas) für das Boot + self.canvas = tk.Canvas( + self.root, width=700, height=80, bg="#0288d1", highlightthickness=0 + ) + self.canvas.pack(pady=15) + + # Ziellinie und Wellen-Deko + self.canvas.create_line( + 650, 0, 650, 80, fill="#ffeb3b", width=3, dash=(5, 3) + ) + self.canvas.create_text( + 650, 15, text="ZIEL", fill="#ffeb3b", font=("Arial", 10, "bold") + ) + + # Das digitale Boot (als Text-Emoji) + self.boot = self.canvas.create_text( + 30, 40, text="⛵", font=("Arial", 30) + ) + + # Live-Anzeige für die Geschwindigkeit + self.tacho_label = tk.Label( + self.root, + text="Geschwindigkeit: 0.00 Knoten", + font=("Arial", 16, "bold"), + bg="#e0f7fa", + fg="#d32f2f", + ) + self.tacho_label.pack(pady=5) + + # Eingabefeld für den User + self.entry = tk.Entry( + self.root, font=("Arial", 14), width=60, bd=3, relief="sunken" + ) + self.entry.pack(pady=10) + self.entry.bind("", self.prüfe_eingabe) + + # Reset Button + self.reset_button = tk.Button( + self.root, + text="Nochmal versuchen", + command=self.reset_test, + font=("Arial", 10, "bold"), + bg="#00897b", + fg="white", + ) + self.reset_button.pack(pady=10) + + def prüfe_eingabe(self, event): + aktuelle_eingabe = self.entry.get() + + # Zeitmessung starten beim ersten Tastendruck + if not self.tippen_aktiv and len(aktuelle_eingabe) > 0: + self.start_zeit = time.time() + self.tippen_aktiv = True + + if self.tippen_aktiv: + vergangene_zeit = time.time() - self.start_zeit + if vergangene_zeit == 0: + vergangene_zeit = 0.01 + + anschläge = len(aktuelle_eingabe) + + # --- DIE KNOTEN-BERECHNUNG --- + anschläge_pro_sekunde = anschläge / vergangene_zeit + meter_pro_sekunde = anschläge_pro_sekunde * METER_PRO_ANSCHLAG + knoten = meter_pro_sekunde / KNOTEN_IN_MPS + + # Tacho aktualisieren + if aktuelle_eingabe == self.test_text: + self.tacho_label.config( + text=f"Geschwindigkeit: {knoten:.2f} Knoten" + ) + else: + self.tacho_label.config( + text=f"⚠️Fehler!! Geschwindigkeit: {knoten:.2f} Knoten⚠️" + ) + + # Boot auf dem Bildschirm bewegen (maximal bis zum Ziel bei Pixel 650) + fortschritt = len(aktuelle_eingabe) / len(self.test_text) + neues_x = 30 + (fortschritt * 620) + self.canvas.coords(self.boot, min(neues_x, 650), 40) + + # Prüfen, ob der Text komplett richtig eingetippt wurde + if aktuelle_eingabe == self.test_text: + self.tippen_aktiv = False + self.entry.config(state="disabled") + self.tacho_label.config( + text=f"🏁 ZIEL! Deine Endgeschwindigkeit: {knoten:.2f} Knoten!" + ) + + def reset_test(self): + self.entry.config(state="normal") + self.entry.delete(0, tk.END) + self.canvas.coords(self.boot, 30, 40) + self.tacho_label.config(text="Geschwindigkeit: 0.00 Knoten") + self.start_zeit = None + self.tippen_aktiv = False + + +if __name__ == "__main__": + root = tk.Tk() + app = BootTipptest(root) + root.mainloop() \ No newline at end of file