|
@@ -5,7 +5,7 @@
|
|
|
# -zufaellige Richtungsaenderung nach Zusammenstoss mit einem Hindernis
|
|
|
# -Rasenteile werden als gemaeht gekennzeichnet, wenn sie befahren wurden
|
|
|
# -Maehprozess mit Tkinter visualisieren
|
|
|
-# -Ende des Maehrvorgangs: 95% Maehrerfolg
|
|
|
+# -Ende des Maehrvorgangs: 95% Maeherfolg
|
|
|
|
|
|
#Fach:Programmieren2
|
|
|
#Dozent: Prof. Chmielewski
|
|
@@ -22,32 +22,31 @@ import sys
|
|
|
import tkMessageBox
|
|
|
|
|
|
|
|
|
-#Groesse des Fensters
|
|
|
+#Groesse des Hauptfensters
|
|
|
|
|
|
-BREITE= 600 #Hauptfensterbreite
|
|
|
+BREITE= 600 #Hauptfensterbreite
|
|
|
|
|
|
-HOEHE = 400 #Hauptfensterhoehe
|
|
|
+HOEHE = 400 #Hauptfensterhoehe
|
|
|
|
|
|
-class Roboter(object):
|
|
|
+class Roboter(object): # allg. Festlegung Klassenvariablen innerhalb Programm, self--> einfacher Zugriff auf Variablen
|
|
|
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.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 #Roboter als Namensschild
|
|
|
- #Roboter allgemein erstellen
|
|
|
+ self.Richtung_x = 0.5 # Laufweite in x_Richtung
|
|
|
+ self.Richtung_y = 0.5 # Laufweite in y_Richtung
|
|
|
+ self.tag = tag # Roboter als Namensschild, Erkennung fuer das Programm
|
|
|
+ #Roboterbezeichnung allgemein 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):
|
|
|
- #while True:
|
|
|
+ def maehen(self): #mit Zugriff auf die allg. Klassenvariablen, s.o.
|
|
|
#Startposition Roboter
|
|
|
start_x = 30
|
|
|
start_y = 10
|
|
|
|
|
|
- self.canvas.move(self.tag, self.Richtung_x, self.Richtung_y)
|
|
|
+ self.canvas.move(self.tag, self.Richtung_x, self.Richtung_y) #Bewegung Roboter in x/y-Richtung
|
|
|
|
|
|
position = self.canvas.coords(self.tag) #Koordinaten der Roboterpositionen
|
|
|
if position[0] == 0:
|
|
@@ -60,35 +59,19 @@ class Roboter(object):
|
|
|
self.Richtung_y = -0.5 #bei Kollision (obere/untere Wand) drehe um (90 Grad)
|
|
|
self.canvas.after(self.Geschwindigkeit, self.maehen)
|
|
|
|
|
|
- x0= position[0] #Laufkoordinaten, Speicherung fuer Darst. Maehweg und Abbruch
|
|
|
+ x0= position[0] #Roboterpositionen waehrend Bewegung, Zwischenspeicherung fuer Darst. Maehweg und Abbruch
|
|
|
y0= position[1]
|
|
|
x1= position[2]
|
|
|
y1= position[3]
|
|
|
self.canvas.create_oval(x0, y0,x1, y1, fill="#FF0000") #Markierung des Maehweges mit Neuzeichnung des Roboters, Farbe rot
|
|
|
- #Ende des Maehvorgangs bei Erreichen der Startpositionen
|
|
|
|
|
|
+ #Ende des Maehvorgangs bei Erreichen der Startpositionen
|
|
|
if (start_x==x0) and (start_y==y0):
|
|
|
self.Geschwindigkeit = 9999999 #Wartezeit an Endposition bis Maeh-Vorgang erneut startet, entspricht Pause des Maehvorgangs
|
|
|
tkMessageBox.showinfo(title="Hinweis", message="Der Rasen wurde gemaeht!") #bei Ende: Oeffnung eines Hinweisfensters fuer Benutzer
|
|
|
- sys.exit() #gleichzeitiges Schliessen bei Anklicken der Messagebox
|
|
|
-
|
|
|
-
|
|
|
-#class Hauptmenue(object):
|
|
|
- #def __init__(self, ):
|
|
|
- #self.Start_Button = tk.Button(Garten,bg ="green", text= "Willkommen zum Rasenmaehen", width=50, height=10, command=self.Start)
|
|
|
-
|
|
|
-def Start ():
|
|
|
- Hauptfenster=tk.Tk()
|
|
|
- Hauptfenster.title("Maehroboter") #Hauptfenster erstellen mit Titel
|
|
|
- Garten = tk.Canvas(Hauptfenster, bg='green', width=BREITE, height=HOEHE) #Erstellung gruene Rasenflaeche, vollstaendig ausgefuelltes Hauptfenster
|
|
|
- Garten.pack()
|
|
|
-
|
|
|
- Roboter = Roboter(Hauptfenster, Garten, BREITE, HOEHE,50 , "Red", 1,30, 10,"Roboter") #Erzeugung individueller Roboter: Durchmesser 50, Farbe rot, Geschwindigkeit 1, Startposition (30/10), Name:Roboter
|
|
|
-
|
|
|
- Start_Button = tk.Button(Garten,bg ="green", text= "Willkommen zum Rasenmaehen", width=50, height=10, command=Roboter.maehen())
|
|
|
- Hauptfenster.mainloop()
|
|
|
+ sys.exit() #gleichzeitiges Schliessen des Programms bei Anklicken der Messagebox
|
|
|
|
|
|
-def Hauptfunktion():
|
|
|
+def Hauptfunktion(): #Ausfuehrung
|
|
|
global Start_Button
|
|
|
global Roboter
|
|
|
Start_Button.destroy()
|
|
@@ -107,7 +90,6 @@ Roboter = Roboter(Hauptfenster, Garten, BREITE, HOEHE,50 , "Red", 1,30, 10,"Robo
|
|
|
Start_Button = tk.Button(Hauptfenster,bg ="white", text= "Willkommen zum Rasenmaehen", width=50, height=10,command = Hauptfunktion)
|
|
|
Start_Button.pack()
|
|
|
|
|
|
-#Roboter.maehen() #Aufrufen Maehfunktion
|
|
|
Hauptfenster.mainloop() #Aufrufen Fenster
|
|
|
|
|
|
|