#! /usr/bin/python # Threads: 2 unterschiedliche Bälle, die an den Wänden reflektiert werden. from grafik import * import math import thread class Ball(TKreis): def __init__(self, startx, starty, Durchmesser, Masse, Farbe, Welt): TKreis.__init__(self) self.m=Masse # g self.vx=0 # cm/s self.vy=0 self.x=startx self.y=starty self.w=Welt self.d=Durchmesser TKreis.setFarbe(self,Farbe) TKreis.setFuellfarbe(self,Farbe) TKreis.setRadius(self,self.d/2) TKreis.setMPos(self,self.x,self.y) TKreis.zeigen(self) def bewegen(self): TKreis.loeschen(self) if TKreis.getXPos(self) > self.w.get_Breite()-self.d: self.vx=-self.vx if TKreis.getXPos(self) < 0: self.vx=-self.vx if TKreis.getYPos(self) > self.w.get_Hoehe()-self.d: self.vy=-self.vy if TKreis.getYPos(self) < 0: self.vy=-self.vy TKreis.pos_versetzen_um(self,self.vx,self.vy) # physikalisch: *dt (=1) TKreis.zeigen(self) def gibImpuls(self,alpha): # immer gleicher Impuls (1), nur unterschiedl. Richt. self.vx=math.cos(alpha)/self.m self.vy=math.sin(alpha)/self.m if __name__=="__main__": mein_Bild=TZeichenblatt() mein_Bild.Init("linux.gif") def task1(): mein_Ball=Ball(10,10,20,0.2,"gelb",mein_Bild) mein_Ball.gibImpuls(0.7) while 1: mein_Ball.bewegen() mein_Bild.refresh() def task2(): mein_Ball=Ball(20,20, 20,1,"rot",mein_Bild) mein_Ball.gibImpuls(0.2) while 1: mein_Ball.bewegen() mein_Bild.refresh() thread.start_new_thread(task1,()) thread.start_new_thread(task2,()) Tkinter.mainloop()
zurück zu den anderen Beispielen
Dr. Bernd Kokavecz