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)
Example #2
0
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()