linda napieralski 6 years ago
parent
commit
addcc9997e
1 changed files with 63 additions and 51 deletions
  1. 63 51
      Maehroboter.py

+ 63 - 51
Maehroboter.py

@@ -1,23 +1,32 @@
-
-#Linda Napieralski
-#Andre Giesbrecht
-#Alexa Tschernitschek
+#Maehroboter
+#-> Aufgabenstellung
+#	-beliebige Startposition auf einer leeren, rechteckigen Rasenflaeche
+#	-vorgegebene Fahrgeschwindigkeit
+#	-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
+
+#Fach:Programmieren2
+#Dozent: Prof. Chmielewski
+#Studiengang: BMT'17
+#Teilnehmer:	Linda Napieralski (4066139)
+#		Andre Giesbrecht (4066107)
+#		Alexa Tschernitschek (4066220)
 
 #Modul importieren
 import Tkinter as tk
-import turtle 
+import turtle
 import time
 import sys
 import tkMessageBox
 
+
 #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):
@@ -27,81 +36,84 @@ class Roboter(object):
 	        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.tag = tag			#Roboter als Namensschild
+		#Roboter 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:
+		#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)
 
         	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)
+       		     	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 Grad)
+	        if position[2] == self.width:
+        	    	self.Richtung_x = -0.5		#bei Kollision (seitliche Wand) drehe um (90 Grad)
         	if position[3] == self.height:
             		self.Richtung_y = -0.5		#bei Kollision (obere/untere Wand) drehe um (90 Grad)
         	self.canvas.after(self.Geschwindigkeit, self.maehen)
 
-		x0= position[0]
+		x0= position[0]				#Laufkoordinaten, Speicherung 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
-
-
-
-#Idee: Abbruch der Fahr-Schleife, wenn Rob an Endkoordinaten ist--> break
-
+		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
 
-#Koordinaten-Datei erzeugen
+		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
 
-#		input=open("Koordinaten.py").readlines()
-		start_x=30
-		start_y=10
-		Liste=[]			#Hauptliste
 
-		Liste.append(x0)        #Daten in entsprechende Unterlisten hinzufuegen
-                Liste.append(y0)
-                Liste.append(x1)
-                Liste.append(y1)
-		input=open("Koordinaten.txt")	#Hauptliste und Unterlisten in Koordinaten-Programm hinzufuegen
-		linenr=0
-		while True:
-			line=input.readline()
-			if not line: break
-			Liste.append(line)	#zeilenweises Hinzufuege
+#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)
 
-		laenge= len(Liste)		#Laenge der Liste
-#		print laenge
+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()
 
-		input.close()
-		output=open("Koordinaten.txt", "w")
+	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
 
-		#for i in range (0,)
+	Start_Button = tk.Button(Garten,bg ="green", text= "Willkommen zum Rasenmaehen", width=50, height=10, command=Roboter.maehen())
+	Hauptfenster.mainloop()
 
-	#	print Liste[0], Liste[1], Liste[2], Liste[3]
-		if (start_x==x0) and (start_y==y0):
-			tkMessageBox.showinfo(title="Hinweis", message="Der Rasen wurde gemaeht!")
-			sys.exit()
+def Hauptfunktion():
+	global Start_Button
+	global Roboter
+	Start_Button.destroy()
+	Roboter.maehen()
 
+#Messung Dauer des Maehvorgangs
 start_zeit = time.time()
 
+#Aufrufen der Hauptfunktionen
 Hauptfenster=tk.Tk()
-Hauptfenster.title("Maehroboter")
-Garten = tk.Canvas(Hauptfenster, bg='green', width=BREITE, height=HOEHE)
+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", 2,30, 10,"Roboter")
 
-Roboter.maehen()
-Hauptfenster.mainloop()
+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(Hauptfenster,bg ="white", text= "Willkommen zum Rasenmaehen", width=50, height=10,command = Hauptfunktion)
+Start_Button.pack()
+
+#Roboter.maehen()				#Aufrufen Maehfunktion
+Hauptfenster.mainloop()				#Aufrufen Fenster
+
+
 
 #Endzeit
-end_zeit=time.time()
+end_zeit=time.time()				#Messung Endzeit mit Ausgabe, am Ende des Programms, in Sekunden
 print "Die Maehdauer betraegt:"
 print ("%.1f seconds" %(end_zeit - start_zeit))