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()