asd
This commit is contained in:
Binary file not shown.
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
from konto.konto import Konto
|
||||||
|
k = Konto(3)
|
||||||
|
k.getNr()
|
||||||
|
|
||||||
|
k.setStand(500.0)
|
||||||
|
k.getStand()
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class Knoten:
|
||||||
|
def __init__(self, data):
|
||||||
|
self.data = data
|
||||||
|
self.next = None
|
||||||
|
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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())
|
||||||
@@ -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)
|
||||||
@@ -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("<KeyRelease>", 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()
|
||||||
Reference in New Issue
Block a user