def flush(self): self.controller.flush() Base.flushAll() self.controller.target.print() # 显示帧率 if Con.FPSShowing: Base.printFPS(int(self.clock.get_fps())) pygame.display.update() self.controller.target.fill(Con.BackGround)
def flush(self, playerPos=None): # 只有在RelShowing成立时,playerPos才会起作用 pygame.display.update() Base.CurrentScreen.fill([int(i - 20) % 256 for i in Con.BackGround]) # 周围变色 self.frame.fill(Con.BackGround) # 更新manager内的角色 self.manager.flush() # 执行打印任务 Base.flushAll() # 更新Frame if Con.RelativeShowing and playerPos and self.onePlayer: pos = [-i for i in playerPos] w, h = Con.ScreenSize pos[0] += w // 2 pos[1] += h // 2 self.frame.print(pos) else: self.frame.print((0, 0))
def showMenu(self): while True: events = pygame.event.get() for e in events: if e.type == pygame.QUIT: self.close() return False, None if e.type == pygame.VIDEORESIZE: if Con.FullScreen: # 全屏不缩放 continue if Con.ScreenSize[0] != e.size[0]: # 横改变 width = e.size[0] height = int(e.size[0] / Con.ScreenSizeRatio) else: # 纵改变 height = e.size[1] width = int(e.size[1] * Con.ScreenSizeRatio) size = max(width, Con.MinSize[0]), max(height, Con.MinSize[1]) self.resize(size, pygame.RESIZABLE) if e.type == pygame.MOUSEBUTTONDOWN: if Base.mouseInRect(self.startRect): return ['c', 's'][self.chooseServer], [self.cUI, self.sUI][self.chooseServer].getText() if Base.mouseInRect(self.backRect): self.close() return False, None if Base.mouseInRect(self.toggleRect): self.toggle() if e.type == pygame.KEYDOWN: if e.key in self.fullKeys: self.fullScreen() if e.key in self.toggleSCKeys: self.toggle() if e.key in self.quitKeys: self.close() return False, None if e.key in self.refreshKeys: self.__init__() if e.key in self.startKeys: return ['c', 's'][self.chooseServer], [self.cUI, self.sUI][self.chooseServer].getText() if e.key in self.settingKeys: self.setting() Base.CurrentScreen.fill(Con.BackGround) # 显示对应UI ui = self.sUI if self.chooseServer else self.cUI ui.update(events) ui.pack() # 摆放底部文字 bottom = 'Create ' + ["CLIENT", "SERVER"][self.chooseServer] + ' [SPACE] to toggle' textbottom = self.font.render( bottom, True, Con.TextColor, self.sOrcColor.calcColor() ) w, h = textbottom.get_size() sw, sh = Base.CurrentScreen.get_size() mouseposx, mouseposy = pygame.mouse.get_pos() textbottommovedistansex = sw - w textbottompos = (int(textbottommovedistansex * mouseposx / sw), sh - textbottom.get_height()) # 浮动式摆法 Base.CurrentScreen.blit(textbottom, textbottompos) self.startRect = pygame.Rect([*textbottompos, *textbottom.get_size()]) # 返回按钮 back = self.font.render('Back', True, Con.TextColor) backPos = (0, 0) Base.CurrentScreen.blit(back, backPos) self.backRect = pygame.Rect([*backPos, *back.get_size()]) # 切换按钮 toggle = self.font.render('Toggle', True, Con.TextColor, self.sOrcColor.calcColor()) togglePos = ( int(Base.CurrentScreen.get_width() - toggle.get_width()), 0 ) Base.CurrentScreen.blit(toggle, togglePos) self.toggleRect = pygame.Rect([*togglePos, *toggle.get_size()]) # 显示帧率 if Con.FPSShowing: Base.printFPS(int(self.clock.get_fps())) # 刷新 Base.flushAll() pygame.display.update() self.clock.tick(Con.FPS) Base.addTime()