Beispiel #1
0
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()


Beispiel #3
0
                            # 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()