Ich hoffe das mir hier vielleicht einer weiter helfen kann und Spaß an Schildkröten hat!
Wir schreiben bald Klausur, deswegen bin ich fleißig am verstehen und lernen von Python. Unsere letzte Übung hat mit Schilkröten und Objektorientierter Programmierung zu tun. Der Text könnte etwas länger werden, schon als Vorwarnung

Ich habe leider immernoch viele Probleme alles hinter Python zu verstehen, aber ich denke, dass ich in dieser Aufgabe schon einen guten Grundstein legen konnte. Und zwar geht es darum, das wir eine Klasse Schildkröte von Anfang an gegeben hatten. Der Code dazu sieht folgendermaßen aus:
Code: Alles auswählen
class Schildkröte(Turtle):
def __init__(self, position, richtung, farbe="green", form="turtle"):
Turtle.__init__(self)
self.farbe = farbe #Farbe als Zeichenkette (str)
self.position = position #Position in Form eines zweielementigen Tupels mit int-Koordinaten (x, y)
self.richtung = richtung #Richtung in Grad (int)
self.speed(200)
self.color(farbe)
self.shape(form)
self.setheading(richtung)
self.jumpto(self.position[0], self.position[1])
self.penup()
self.speed(1.0)
self.tot = False
def gehe_nach(self, position): # Position als Tupel (siehe oben)
self.position = position
self.goto(position[0], position[1])
def zeigt_über_rand(self): # Hilfsmethode;
distanz = 30 # gibt True zurück, wenn die Schildkröte mit einem Vorwärtszug der Länge 30
# über den Rand hinaus laufen würde
return max((abs(self.position[0] + distanz*math.cos(math.pi/180*self.richtung)) - 380), (abs(self.position[1] + distanz*math.sin(math.pi/180*self.richtung)) - 280)) > 0
def richtung_nach(self, andere_Schildkröte): #Berechnet die benötigte Richtung der Schildkröte,
dx = andere_Schildkröte.position[0] - self.position[0] #um sich zu einer anderen Schildkröte zu bewegen
dy = andere_Schildkröte.position[1] - self.position[1]
phi = math.atan(dy/dx)
if (dx<0 and dy>=0) or (dy<0 and dx>=0):
phi += math.pi
if dy < 0:
phi += math.pi
return int(phi*180/math.pi) # Rückgabe der Richtung in Grad (int; abgerundet)
def aktualisiere_Attribute(self):
neue_position = (self.getx(), self.gety())
self.position = neue_position
self.richtung = self.getheading()
def lege_ei(self):
return self.__class__(self.position, 180)
def sterben(self):
self.tot = True
self.hideturtle()
def art(self):
raise NotImplementedError
Code: Alles auswählen
class Landschildkröte(Schildkröte):
farben = {"Ei": "yellow", "geschlüpft": "blue"}
def __init__(self, position, richtung):
Schildkröte.__init__(self, position, richtung, self.farben["Ei"])
self.speed(6.0)
self.status("Ei")
def art(self):
return "Landschildkröte"
def schlüpfen(self):
self.color(self.farben["geschlüft"])
self.form("turtle2")
self.status("geschlüpft")
def gehe_vorwärts(self, distanz):
self.forward(distanz)
self.aktualisiere_Attribute()
def drehe_nach(self, richtung):
self.position = position
self.richtung = self.getheading()
Das wäre mein erstes Problem. Ich verstehe nicht warum es davor das Problem beim ausführen nicht ausgeworfen hat.
Das nächste Problem wäre die nächste Kröte. Wir sollen eine neue Klasse Killerkröte der Unterklasse Landschildkröte erstellen. Diese soll auch einige besondere Eigenschaften haben und als letztes eine neue Methode distanz_instinkt(self, andere_Schildkröte) bei der die euklidische Distanz zwischen der eigenen Position und der Position der anderen Schildkröte berechnet werden soll. Ich wüsste wie ich das mathematisch berechne aber leider nicht wie ich das in python umsetze. Denn danach sollen wir zwei weitere Instanzen schildkröte1 vom Typ Landschildkröte und schildkröte2 vom Typ Killerkröte mit bestimmten Positionen erzeugen und dann den Abstand beider Schildkröten mit der Methode dinstanz_instinkt berechnen. Das Ergebnis sollen wir in der Variable abstand speichern. Da bin ich mir leider auch nicht sicher, wie das am Ende aussehen soll.
Die Instanzen hätte ich schon:
Code: Alles auswählen
schildkröte1 = Landschildkröte((0, 0), 0)
schildkröte2 = Killerkröte((30, 40), 0)
Ich weiß, dass ist erstmal sehr viel Text und ich will auch keine vorgefertigte Lösung, weil in der Klausur hock ich ja auch alleine da, ich bräuchte nur ein wenig Hilfe beim Verständnis, dass ich dass dann auch nächste Woche von alleine kapiere

Vielleicht hat ja jemand eine gute Seele und Lust und Zeit mir zu helfen

Vielen dank im Voraus!
Grüße
Chrissi