class KonnaRakendus(Frame): """Frame, mida saab suvalises teises rakenduses kasutada""" def __init__(self, parent): super().__init__(parent) # Sisuliselt sama kui Tk() # Määrame rea ja veeru indeksiga 0 kõige kaalukamateks self.rowconfigure(index=0, weight=1) self.columnconfigure(index=0, weight=1) # Tekita lõuend, seo see root objektiga c = Canvas(self) # Lõuendi nähtavaks muutmiseks paigutame ta lahtrisse 0,0 c.grid(column=0, row=0, sticky=(N, S, W, E)) # Seo lõuendiga TurtleScreen ja seo TurtleScreeniga konn self.ts = TurtleScreen(c) self.algseis() # Tekitame nuppude paneeli f f = Frame(self) f.grid(column=0, row=1) # Tekita edasiliikumise nupp b = Button(f, text="Edasi", command=self.edasi) b.grid(column=0, row=0) # Tekita vasakpöörde nupp bv = Button(f, text="Vasakule", command=self.vasakule) bv.grid(column=1, row=0) # Tekita parempöörde nupp bp = Button(f, text="Paremale", command=self.paremale) bp.grid(column=2, row=0) # Tekita muutuja kiirus ja sildiga tekstikast kiiruse sisestamiseks self.kiirus = IntVar() self.kiirus.set(100) lbl_kiirus = Label(f, text=" Kiirus: ") lbl_kiirus.grid(column=3, row=0) entry_kiirus = Entry(f, textvariable=self.kiirus) entry_kiirus.grid(column=4, row=0) # Tekita algseisu nupp ba = Button(f, text="Algseis", command=self.algseis) ba.grid(column=5, row=0) def algseis(self): self.ts.clear() self.ts.bgcolor('cyan') self.konn = Frog(self.ts, x=0, y=0) def edasi(self): self.konn.forward(self.kiirus.get() / 2) self.konn.jump(self.kiirus.get() / 2) def vasakule(self): self.konn.left(10) def paremale(self): self.konn.right(10)
class TurtleWindow: ############################################################################################################### def __init__(self, num_vehicles, num_food_sources): self.root = None self.canvas = None self.wn = None self.button_frame = None self.start_button = None self.stop_button = None self.reset_button = None self.quit_button = None self.num_food_sources = num_food_sources self.food_source_list = [] self.num_vehicles = num_vehicles self.vehicle_list = [] self.running = False self.create_window() self.wn.tracer(0, 0) self.create_food_sources() self.create_vehicles() self.wn.update() ############################################################################################################### def create_window(self): self.root = tk.Tk() self.canvas = tk.Canvas(self.root, width=SCREEN_SIZE, height=SCREEN_SIZE) self.canvas.pack() self.wn = TurtleScreen(self.canvas) self.root.title("Braitenberg's Vehicle #2") self.wn.onkey(self.start_stop, "space") self.wn.listen() self.button_frame = tk.Frame(self.root) self.button_frame.pack() self.start_button = tk.Button(self.button_frame, text="Start", fg="black", command=self.start_stop) self.reset_button = tk.Button(self.button_frame, text="Reset", fg="black", command=self.reset) self.quit_button = tk.Button(self.button_frame, text="Quit", fg="black", command=self.quit) self.start_button.pack(side=tk.LEFT) self.reset_button.pack(side=tk.LEFT) self.quit_button.pack(side=tk.LEFT) ############################################################################################################### def create_food_sources(self): for i in range(self.num_food_sources): food_type = random.choice(['sugar']) if food_type == 'sugar': self.food_source_list.append(Sugar(self, i)) print(self.food_source_list) ############################################################################################################### def create_vehicles(self): for i in range(self.num_vehicles): self.vehicle_list.append(Vehicle(self, i)) ############################################################################################################### def start_stop(self): if self.running: self.running = False self.start_button.config(text="Start") else: self.running = True self.start_button.config(text="Pause") while self.running: for i in range(self.num_vehicles): self.vehicle_list[i].move() self.wn.update() time.sleep(0.01) ############################################################################################################### def reset(self): self.vehicle_list = [] self.food_source_list = [] self.wn.clear() self.wn.tracer(0, 0) self.create_food_sources() self.create_vehicles() self.wn.update() ############################################################################################################### @staticmethod def quit(): sys.exit()