class Browser(object): def __init__(self): self.clock = pygame.time.Clock() self.screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) self.event_manager = EventManager() self.current_page = Page(pygame.Surface((0, 0)), BLACK, self.event_manager) self.name_1 = "Batman" self.name_2 = "Superman" def get_shower(self, klass, *args): def shower(): self.current_page.clean() self.current_page = klass(self.screen, self.event_manager, *args) self.current_page.display() return shower def run(self): self.get_shower(SplashScreen)() def cb1(value): self.name_1 = value self.get_shower(TextInput, "Enter Player 2's name", cb2)() def finish_cb(): self.get_shower(LeaderBoardPage)() def cb2(value): self.name_2 = value self.get_shower(BoardPage, (self.name_1, self.name_2), finish_cb)() self.event_manager.add_timer( 2, self.get_shower(TextInput, "Enter Player 1's name", cb1)) while True: self.event_manager.run() self.clock.tick(FPS)
def display(self): del self.texts[2:] TOP = self.texts[1][1].top + 35 format_string = "{rank:>4d} | {name:20s} | {matches_played:>14d} | {wins:>4d} | {losses:>6d} | {point_diff:>16d} | {win_per:>14.2f}" for index, leader in enumerate(self.leaderboard.get_top_number(10)): res = SMALL.render( format_string.format(**dict( zip(("rank", "name", "matches_played", "wins", "losses", "point_diff", "win_per"), leader))), True, BLACK) res_rect = res.get_rect() res_rect.top = TOP + 35 * index res_rect.centerx = HALF_WIDTH self.texts.append((res, res_rect)) super(LeaderBoardPage, self).display() if __name__ == '__main__': from properties import SCREEN_HEIGHT, SCREEN_WIDTH from eventmanager import EventManager c = pygame.time.Clock() s = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) e = EventManager() l = LeaderBoardPage(s, e) l.display() while True: e.run() c.tick(30)