def __init__(self): pygame.init() d = pygame.display.Info() self.desktop_size = (d.current_w, d.current_h) self.size = (800, 600) pygame.display.set_caption("Moonbase") self.done = False self.clock = pygame.time.Clock() self.keys = set() self.screen = pygame.display.set_mode(self.size) self.screen.fill((0xFF, ) * 3) self.clicked = 0 self.model = Model() self.ui = WaitUI(self, None) self.client = Client(self) self.client.start()
class Main: def __init__(self): pygame.init() d = pygame.display.Info() self.desktop_size = (d.current_w, d.current_h) self.size = (800, 600) pygame.display.set_caption("Moonbase") self.done = False self.clock = pygame.time.Clock() self.keys = set() self.screen = pygame.display.set_mode(self.size) self.screen.fill((0xFF, ) * 3) self.clicked = 0 self.model = Model() self.ui = WaitUI(self, None) self.client = Client(self) self.client.start() def ui_push(self, cls): self.ui = cls(self, self.ui) def ui_pop(self): self.ui = self.ui.parent def ui_swap(self, cls): self.ui = cls(self, self.ui.parent) def stop(self): self.done = True self.client.stop() def run(self): while not self.done: self.clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: self.stop() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_q and pygame.key.get_mods() & pygame.KMOD_CTRL: self.stop() self.keys.add(event.key) self.ui.handle_key(event) elif event.type == pygame.KEYUP: self.keys.discard(event.key) self.ui.handle_key_up(event) elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: self.clicked = True self.ui.handle_click(event) elif event.button in (4, 5): # scrollin! event.scroll_dir = event.button * 2 - 9 self.ui.handle_scroll(event) elif event.type == pygame.MOUSEBUTTONUP: if event.button == 1: self.clicked = False self.ui.handle_click_up(event) elif event.type == pygame.MOUSEMOTION: if event.buttons[0]: self.ui.handle_drag(event) else: self.ui.handle_motion(event) self.screen.fill((0, ) * 3) self.ui.update() self.ui.reblit(self.screen, self.clock.get_time()) pygame.display.flip() pygame.quit()