from tkinter import * from math import * from threading import * import time class Jalutaja(Thread): def alusta(self, x, y, r, nurk, samm, ala): self.x=x self.y=y self.r=r self.nurk=nurk self.samm=samm self.ala=ala self.arvutaLiikumine() self.joonista() def joonista(self): self.ring=self.ala.create_oval(self.x-self.r, self.y-self.r, self.x+self.r, self.y+self.r) self.joon=self.ala.create_line(self.x, self.y, self.x+self.dx, self.y-self.dy) def liigu(self): self.ux=self.x+self.dx self.uy=self.y-self.dy if self.kasSobibUusKoht(): self.x=self.ux self.y=self.uy self.ala.coords(self.ring, self.x-self.r, self.y-self.r, self.x+self.r, self.y+self.r) self.ala.coords(self.joon, self.x, self.y, self.x+self.dx, self.y-self.dy) def vasakule(self, syndmus): self.nurk+=0.1 self.arvutaLiikumine() def paremale(self, syndmus): self.nurk-=0.1 self.arvutaLiikumine() def arvutaLiikumine(self): self.dx=self.samm*cos(self.nurk) self.dy=self.samm*sin(self.nurk) def run(self): while True: self.liigu() time.sleep(0.5) def kasSobibUusKoht(self): if self.ux<0: return False if self.uy<0: return False if self.ux>self.ala.laius: return False if self.uy>self.ala.korgus: return False return True aken=Tk() ala=Canvas(aken) ala.pack() ala.focus_set() ala.laius=300 ala.korgus=200 tegelane1=Jalutaja() tegelane1.alusta(100, 150, 30, pi/6, 20, ala) ala.bind("", tegelane1.paremale) ala.bind("", tegelane1.vasakule) #tegelane1.liigu() tegelane1.start() aken.mainloop()