示例#1
0
def main():
    """
    Main starting point for the program

    :return: N/A
    """
    Graphics.init()
    FPS.init()

    drawer = Drawer()

    key_down_listeners = [drawer.on_key_down]

    mouse_down_listeners = [drawer.on_mouse_down]

    mouse_up_listeners = [drawer.on_mouse_up]

    while True:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    sys.exit()
                if event.key == pygame.K_F10:
                    Graphics.toggle_fullscreen()

                for delegate in key_down_listeners:
                    delegate(event.key, event.mod)

            if event.type == pygame.MOUSEBUTTONDOWN or event.type == pygame.MOUSEBUTTONUP:
                mouse_position = (event.pos[0] / Graphics.get_scale()[0],
                                  event.pos[1] / Graphics.get_scale()[1])

                if event.type == pygame.MOUSEBUTTONDOWN:
                    for delegate in mouse_down_listeners:
                        delegate(mouse_position, event.button)

                if event.type == pygame.MOUSEBUTTONUP:
                    for delegate in mouse_up_listeners:
                        delegate(mouse_position, event.button)

        drawer.update()

        drawer.draw()

        FPS.update()
        Graphics.flip()
    def runSingleSimulation(self, path):
        reader = FilesReader(path + 'animation_dynamic')
        mapSize, maxSpeed = reader.readStatic(path + 'animation_static')
        drawer = Drawer(int(mapSize * 1000), maxSpeed)
        positions = reader.readNextPosition()
        drawer.firstUpdate()
        time.sleep(4)

        while len(positions) > 0:
            drawer.update(positions)
            positions = reader.readNextPosition()
            skipPositions = 50
            while skipPositions > 0:
                reader.readNextPosition()
                skipPositions -= 1
    def run_single_simulation(self):
        # Initialise screen
        pygame.init()
        screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
        #screen = pygame.display.set_mode((500, 500))

        # Fill background
        background = pygame.Surface(screen.get_size())
        background = background.convert()
        background.fill((0, 0, 0))

        # Display some text
        font = pygame.font.Font(None, 30)
        text = font.render("ESC to exit", 1, (255, 255, 255))
        textpos = text.get_rect()
        textpos.centerx = 60
        textpos.centery = 10
        background.blit(text, textpos)

        # Blit everything to the screen
        screen.blit(background, (0, 0))
        pygame.display.flip()

        drawer = Drawer(screen, self.reader.dimensions)

        flag = True
        running = True
        while running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        running = False
            particles = self.read_positions()

            if particles is None:
                flag = False

            screen.blit(background, (0, 0))

            if flag:

                drawer.update(particles)
                pygame.display.flip()