1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| from math import sin,cos,radians
from pygame import time
class satelite:
def __init__(self,origine,angle,distancex,distancey,vitesse):
self.origine = origine
self.angle = angle
self.distancex = distancex
self.distancey = distancey
self.r,self.laps = vitesse
self.t = time.Clock()
self.tt = 0
@property
def position(self):
try:
return self.origine.position[0]+cos(radians(self.angle))*self.distancex,self.origine.position[1]+sin(radians(self.angle))*self.distancey
except:
return self.origine[0]+cos(radians(self.angle))*self.distancex, self.origine[1]+sin(radians(self.angle))*self.distancey
def update(self):
self.tt += self.t.tick()
if self.tt >= self.laps:
self.angle += self.r
self.tt -= self.laps
if __name__ == "__main__":
from pygame import *
screen = display.set_mode((300,300))
#bg = screen.copy()
#bg.set_alpha(1)
a = satelite((150,150),0,50,50,(1,40))
b = satelite(a,0,20,50,(1,10))
c = satelite(b,0,30,50,(1,5))
while not event.peek(QUIT) and a.angle != 360:
event.clear()
#screen.blit(bg,(0,0))
a.update()
b.update()
c.update()
#screen.set_at(a.origine,(255,255,255))
#screen.set_at(a.position,(255,255,255))
#screen.set_at(b.position,(255,255,255))
screen.set_at(c.position,(255,255,255))
display.flip()
while event.wait().type != QUIT: pass |
Partager