#Linda Napieralski #Andre Giesbrecht #Alexa Tschernitschek #Modul importieren import Tkinter as tk import turtle import time #Groesse des Fensters BREITE= 600 #Hauptfensterbreite HOEHE = 400 #Hauptfensterhoehe #Gartenflaeche=240.000Pixel #global #global class Roboter(object): def __init__(self, Hauptfenster, canvas, BREITE, HOEHE, Roboter_width, Farbe, Geschwindigkeit, start_x, start_y, tag): self.width = BREITE #Einfuegen Hauptfensterbreite in Klasse self.height = HOEHE #Einfuegen Hauptfensterhoehe in Klasse self.canvas = canvas self.Geschwindigkeit = Geschwindigkeit self.Richtung_x = 0.5 #Geschwindigkeit in x_Richtung self.Richtung_y = 0.5 #Geschwindigkeit in y_Richtung self.tag = tag #Neuzeichnen #Roboter erstellen self.canvas.create_oval(start_x, start_y, start_x + Roboter_width, start_y + Roboter_width, fill=Farbe, tag=tag) #Funktion "Fahren" des Roboters def maehen(self): self.canvas.move(self.tag, self.Richtung_x, self.Richtung_y) position = self.canvas.coords(self.tag) #Koordinaten der Roboterpositionen if position[0] == 0: self.Richtung_x = 0.5 #fahre weiter Richtung x_Achse, (=Ausgangskoord.+0.5) if position[1] == 0: self.Richtung_y = 0.5 #fahr weiter Richtung y_Achse, (=Ausgangskoord.+0.5) if position[2] == self.width: self.Richtung_x = -0.5 #bei Kollision (seitliche Wand) drehe um (90°) if position[3] == self.height: self.Richtung_y = -0.5 #bei Kollision (obere/untere Wand) drehe um (90°) self.canvas.after(self.Geschwindigkeit, self.maehen) x0= position[0] y0= position[1] x1= position[2] y1= position[3] self.canvas.create_oval(x0, y0,x1, y1, fill="red") #Markierung des Maehweges mit Neuzeichnung des Roboters #Idee: Abbruch der Fahr-Schleife, wenn Rob an Endkoordinaten ist--> break #Koordinaten-Datei erzeugen # input=open("Koordinaten.py").readlines() start_x=30 Liste=[] #Hauptliste x0_Koordinate=[] #4 Unterlisten in Hauptliste, Darst. als 4 Spalten y0_Koordinate=[] x1_Koordinate=[] y1_Koordinate=[] x0_Koordinate.append(x0) #Daten in entsprechende Unterlisten hinzufuegen y0_Koordinate.append(y0) x1_Koordinate.append(x1) y1_Koordinate.append(y1) input=open("Koordinaten.py") #Hauptliste und Unterlisten in Koordinaten-Programm hinzufuegen linenr=0 while True: line=input.readline() if not line: break Liste.append(line.split()) #zeilenweises Hinzufuegen Liste.append(x0_Koordinate) Liste.append(y0_Koordinate) Liste.append(x1_Koordinate) Liste.append(y1_Koordinate) laenge= len(Liste) #Laenge der Liste # print laenge input.close() output=open("Koordinaten.py", "w") for i in range (0,start_x) #print x0_Koordinate[0], y0_Koordinate[0], x1_Koordinate[0], y1_Koordinate[0] # print x0 # print y0 # print x1 # print y1 # def maehen(self): # line1= self.canvas.create_line(self.Richtung_x,self.Richtung_y ,width=1, fill="#000") # self.canvas.move(self.tag, self.Richtung_x, self.Richtung_y) # position = self.canvas.coords(self.tag) # if position[0] == 0: # self.Richtung_x = 0.5 #Geschwindigkeit nach Kollision # if position[1] == 0: # self.Richtung_y = 0.5 # if position[2] == self.width: # self.Richtung_x = -0.5 # if position[3] == self.height: # self.Richtung_y = -0.5 # self.canvas.after(self.Geschwindigkeit, self.fahren) #Zeitmessung Maehvorgang #Startzeit start_zeit = time.time() #Koordinaten zwischenspeichern in Extradatei #input=open("Koordinaten.py").readlines() #x_Koordinate=[] #y_Koordinate=[] Hauptfenster=tk.Tk() Hauptfenster.title("Maehroboter") Garten = tk.Canvas(Hauptfenster, bg='green', width=BREITE, height=HOEHE) Garten.pack() Roboter = Roboter(Hauptfenster, Garten, BREITE, HOEHE, 50, "Red", 2,30, 10,"Roboter") #Roboter.fahren() Roboter.maehen() Hauptfenster.mainloop() #Endzeit end_zeit=time.time() print ("%.1f seconds" %(end_zeit - start_zeit))