class Picture: def __init__(self, width, height): self.mWidth = width self.mHeight = height self.mSky = Sky(width, height) self.mPlanet1 = Planet(200, 210, 215) self.mPlanet1.setColor(204, 204, 204) self.mMountain1 = Mountain(width, height) self.mCrater1 = Crater(40, 130, 100, 100) self.mCrater2 = Crater(35, 120, 50, 50) self.mCrater3 = Crater(90, 10, 90, 90) self.mCrater4 = Crater(250, 90, 100, 100) self.mCrack1 = Crack(290, 250) self.mCrack2 = Crack(285, 240) self.mHill1 = Hill(175, 400) self.mHill2 = Hill(300, 380) self.mHill3 = Hill(500, 450) self.mStar = Star(width, height) return def draw(self, surface): self.mSky.draw(surface) self.mPlanet1.draw(surface) self.mMountain1.draw(surface) self.mCrater1.draw(surface) self.mCrater2.draw(surface) self.mCrater3.draw(surface) self.mCrater4.draw(surface) self.mCrack1.draw(surface) self.mCrack2.draw(surface) self.mHill1.draw(surface) self.mHill2.draw(surface) self.mHill3.draw(surface) self.mStar.draw(surface) return
handle_key[K_w] = lambda k, d: c.set_translation( z = (0.05 if d else 0.) ) handle_key[K_s] = lambda k, d: c.set_translation( z = (-0.05 if d else 0.) ) handle_key[K_a] = lambda k, d: c.set_translation( x = (-0.05 if d else 0.) ) handle_key[K_d] = lambda k, d: c.set_translation( x = (0.05 if d else 0.) ) handle_key[K_p] = lambda k, d: pdb.set_trace() handle_key[K_UP] = lambda k, d: c.set_rotation( x = (0.01 if d else 0.) ) handle_key[K_DOWN] = lambda k, d: c.set_rotation( x = (-0.01 if d else 0.) ) handle_key[K_RIGHT] = lambda k, d: c.set_rotation( y = (0.01 if d else 0.) ) handle_key[K_LEFT] = lambda k, d: c.set_rotation( y = (-0.01 if d else 0.) ) event = pygame.event.poll() while event.type not in ( NOEVENT, QUIT ): event = pygame.event.poll() while event.type != QUIT: event = pygame.event.poll() while event.type not in ( NOEVENT, QUIT ): if event.type in handle_event: handle_event[ event.type ]( event ) event = pygame.event.poll() r.begin_frame() c.update( r ) #program.set_matrices_from_gl( "modelview", "projection" ) #batch.draw( batch_draw, program ) w.draw( r, c ) r.end_frame()
# if the mass string cannot be evaluated (for example if it ends in "*"), # m just stays as it is so we don't do anyhting pass if m < 10**30: radius = max(1, math.log(m, 10) - 18) else: radius = math.log(m, 10) vel = [(mouse_x - planet_w) / 10, (mouse_y - planet_h) / 10] pygame.draw.line(screen, RED, planet_pos, mouse, 3) p = Planet([planet_w, planet_h], radius, vel, m, color) p.draw(screen) system.predict(screen, FPS, 60, p) pygame.draw.rect(screen, DATA_GREY, (WIDTH, 0, width_data_rect, HEIGHT)) pygame.draw.line(screen, WHITE, (WIDTH, 0), (WIDTH, HEIGHT)) for i in range(len(planets)): planets[i].write(i, screen, font, WIDTH) p.write(i + 1, screen, font, WIDTH) rect_x = planet_w - radius rect_y = planet_h - rect_h - radius - 5
while running: for event in pygame.event.get(): if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE: running = False # for next_frame() glClear(GL_COLOR_BUFFER_BIT) glColor3f(1, 1, 1) frame = numpy.asarray(artoolkit_frame(), dtype=numpy.uint8).reshape(size[1], size[0], 3) image = cv.fromarray(frame) pyimage = pygame.image.frombuffer(image.tostring(), cv.GetSize(image), 'RGB') draw_surface(pyimage) load_projection_matrix() for planet in planets: planet.update() planet.artoolkit.update() if planet.artoolkit.visible: planet.artoolkit.load_matrix() planet.draw() # if # for pygame.display.flip() # while artoolkit_close()