def generate_system(self): u = Universe(self) sun = Body("The Sun", pow(10, 29 + self.rng.random() * 2), pow(10, 11.9 + self.rng.random() * 0.2), universe=u) u.sun = sun for i in range(1 + self.rng.randint(0, 4) + self.rng.randint(0, 4)): self.add_gas_giant(sun) for i in range(1 + self.rng.randint(0, 4) + self.rng.randint(0, 4)): self.add_rocky_planet(sun) u.bodies.sort(key=lambda obj: obj.distance(sun)) u.make_system_tree() self.system_generated = True return u
class TestOrbit(unittest.TestCase): def setUp(self): self.u = Universe() self.u.sun = Body("The Sun", pow(10, 30), pow(10, 12), universe=self.u) self.t = Thread(target=self.u.run, args=[False]) def tearDown(self): self.u.stop() def test_solitary(self): starting_position = self.u.sun.position five_days = 10*24*5 self.t.start() while (self.u.physics_cache.latest < five_days): pass self.u.paused = False while (self.u.time < five_days): pass self.u.paused = True self.assertEqual(self.u.sun.position, starting_position) def test_moon(self): self.u.sun.add_satellite("Satellite", pow(2, 70), pow(2, 42.5), (255,255,255), pow(2,27), 0, 0, pow(2,-6), 0, 0, False) starting_distance = self.u.bodies[0].distance(self.u.bodies[1]) one_day = 10*24 self.t.start() for i in range(1,10+1): while (self.u.physics_cache.latest < one_day*i): pass self.u.paused = False while (self.u.time < one_day*i): pass self.u.paused = True new_distance = self.u.bodies[0].distance(self.u.bodies[1]) self.assertTrue(starting_distance*0.99999 <= new_distance <= starting_distance*1.00001)
def setup(): global universe universe = Universe()
import pygame import sys from core.universe import Universe pygame.init() window_name = '.'.join(sys.argv[0].split('.')[:-1]) pygame.display.set_caption(window_name if window_name != '' else 'pygame') SCREEN = pygame.display.set_mode((1000, 400)) done = False clock = pygame.time.Clock() FRAME_RATE = 60 universe = Universe() def setup(): global universe universe = Universe() def draw(): SCREEN.fill((245, 245, 245)) if (universe.show(SCREEN)): universe.update() #----------------------------------------------------------------------- while not done: draw() for event in pygame.event.get():
def setUp(self): self.u = Universe() self.u.sun = Body("The Sun", pow(10, 30), pow(10, 12), universe=self.u) self.t = Thread(target=self.u.run, args=[False])