From 74be0ae59646f0860e037bc668f2d7c233814dd8 Mon Sep 17 00:00:00 2001 From: alstergym Date: Mon, 21 Sep 2026 15:24:35 +0200 Subject: [PATCH] asd --- New Piskel.zip | Bin 0 -> 2210 bytes item.py | 12 +++ kart.py | 19 +++++ konto/konto.py | 33 ++++++++ konto/starten.py | 6 ++ schatzsuche/knoten.py | 5 ++ schatzsuche/liste.py | 12 +++ schlange/schlange.py | 35 ++++++++ schlange/starten_schlange.py | 8 ++ test_kart.py | 31 +++++++ tippen.py | 158 +++++++++++++++++++++++++++++++++++ 11 files changed, 319 insertions(+) create mode 100644 New Piskel.zip create mode 100644 item.py create mode 100644 kart.py create mode 100644 konto/konto.py create mode 100644 konto/starten.py create mode 100644 schatzsuche/knoten.py create mode 100644 schatzsuche/liste.py create mode 100644 schlange/schlange.py create mode 100644 schlange/starten_schlange.py create mode 100644 test_kart.py create mode 100644 tippen.py diff --git a/New Piskel.zip b/New Piskel.zip new file mode 100644 index 0000000000000000000000000000000000000000..74bbeb3ca14263b1bd47e50f6a60c5bfa2670876 GIT binary patch literal 2210 zcmWIWW@h1H009?InOH0Ly=(j!85lsA6Da1LSX5%5SCE(98Q|y6%OwR;$?NIi5(K0L zK$wFKNXmcypUA+#$n5Fj7*fHwWYT#q#z2u{{L;}=Cb71fMt+bA^O|DQJn0j|sZ-J% z+&?!zVzoJ-qms=X7I!e~O!+In@AE8YwXVFscX{!?&u3>|R(W~e-SovBxqWTl)^#vS znJN}V`AYo|IQAf83FG%~ms72-oNBrKtoZAWJo!rsjY+#bN~#ot5_?x#usxH${n}Pn zKQO3QO|m!Z!l_hC{)KGfM<4nqWNo?8yTbgvW#-QI`E1Qsr%2CUT9ctPTd{!WSZmK_ z1rC+xiPtY$ur=N=ujWYlG%ufRqwAk~hL33$i{GY5H_d6A({OzA@_<N`+` z!PC{xWt~$(Qvgb!-_@~DjRxujVOXFW5*z3O&_EBeUd7}nkQ4vu(svd|9+4{%h8Jwx zCMs|}l4KFIX-Ig&>%x1)e~Gw3oSA^3*@Y9@5^KYp^)GK$X4AXk;~!p{>u+rT<>_;i zj5&G>x!2Vnh4mG;+rPe zGI_gF`fldD^KYD5Hl2>1xH(thXU6ddEPu*u(K$bWm(oRfnwnA zy=89^G4NbE>wIMaQxWbMh;LOnj~)X?q{hG`d#*zPJjWJyujXp9&{(ng(E{7H$*>4` z0E__Hu6nh-4aF}N9=%yGIlN$%ufkK++D8cwU!V5g_ve>XoY23TH4W#!%H2r$9mdnp zYo`1x$CR-^M&02tKW9Hf#XR@De@i64Z8dt3^{V#c%DjCn3OXuIj=MPuYLZe!D|aX{ z{ON!Dm2cYf9l+$j;W$^u(@j&{7yE{U=od1DHXkix*<0zqn zsKD^p$&H7DH)?recm<1s3A;_Z0o(tNN{MGKmAf+EV4wYv=T4_|CwEPF#d^jPo6jOS zCSjjG#4%gQueGoUn_|)=!NA^Wbw!&~gl}!tXU5iz7rh^{gJNJhPs~n44CGp7oj(wJ zY%%T_Sbt8#Ap)5GK^T??jERi_URc4ipO4W|;8?p`w~G>&&=r@1wryTYDvu;pls+;D zO*Iz~dE|eTdxd^@#|qJqILFc&?dq8~qeb+7etVWy_xtXhH?A+wpU%2q5nD4m=RKEX z!eU;Rb7983H4XME5|5k%4iZrx-w3uy@LU%L1wVtPzceEF31@)2+vkTw z0fQcdVZm=gZ1D5LilDvc7y|`l<3DfpP+6ql=qvIjd4-CT(mY2cA%2CxN@hpJI;}W| zy*Hg))-L$Or8UR%-LrFVmTtUR{Qk+AnVUBkznA~}!-7|8`RU87*S9ONX_Rmt+*x$% z0p~;Wih1fLw;Hl_u6YST&0gpSdrdYX71v*;aEyb6V1=#-jIPq{W_113J zG&#hOp7X5X(1R*{{+}`k+xus)EzSgVu-N-i+O2`FGQ?3AYY>c-VJP zvSo>=3y*jrrSBrjtOQ3#{ic^RPz@GjYnM4?HSG}OTf&lP}IKUfK z8+zq|&{7JFOOQ5jRf4V!y~IOk`wnzJNE^8PL)V6$O%d8ESs>cLnHF6edh$YO`@ss) Z22N}N-mIYJ1OqD&3IknV2`ow&7y#TJ4*LKA literal 0 HcmV?d00001 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