def render(self, screen: pygame.Surface): width, height = pygame.display.get_surface().get_size() screen.fill(BGCOLOR) text_surf, text_rect = render_text(f"Highscores", resources.get_font("round50"), WHITE) text_rect.centerx, text_rect.y = width // 2, 50 screen.blit(text_surf, text_rect) # Display highscore list highscores = settings.get_highscores() for i, highscore in enumerate(highscores): color = (200 - i * 30, 200 - i * 20, 200 - i * 30) text = (f"{i+1} ___ {highscore['name']:>3} _____ " f"{highscore['score']:3} _____ {highscore['date']} ") text_surf, text_rect = render_text(text, resources.get_font("mono30"), color) text_rect.x, text_rect.y = 75, 150 + i * 50 screen.blit(text_surf, text_rect) text = "Return to Main Menu" text_surf, text_rect = render_text(text, resources.get_font("round40"), APPLE_COLOR) text_rect.centerx, text_rect.y = width // 2, height - 120 screen.blit(text_surf, text_rect)
def upload(): """アップロード""" if 'POST' != request.method: return render('upload.html') file = request.files['Filedata'] if not file: return render_text(u'error_nofile', status=400) try: source = file.stream.read() except AttributeError: source = file.stream.getvalue() #最大サイズ if 1024 * 512 < len(source): return render_text(u'error_size', status=413) author = request.remote_addr #データ登録 try: model.Match.get_or_insert(source, author=author) except model.ParseError, ex: logger.warn(ex) return render_text(u'error_data', status=415)
def render(self, screen: pygame.Surface): width = pygame.display.get_surface().get_width() screen.fill(BGCOLOR) font = resources.get_font("round50") text_surf, text_rect = render_text("Settings", font, WHITE) text_rect.centerx, text_rect.y = width // 2, 50 screen.blit(text_surf, text_rect) pos_y = 180 for i, option in enumerate(self.options): # Leave more space for last option if i == len(self.options) - 1: pos_y += 60 if i == self.index: # Selected color = APPLE_COLOR font = resources.get_font("round40") else: # Inactive color = WHITE font = resources.get_font("round30") text_surf, text_rect = render_text(option, font, color) text_rect.x, text_rect.y = (150, pos_y + 60 * i) screen.blit(text_surf, text_rect) # Sound slider self.sound_slider.percent = self.sound self.sound_slider.rect.x = 450 self.sound_slider.rect.y = 180 if self.index == 0: self.sound_slider.color = APPLE_COLOR else: self.sound_slider.color = BGCOLOR self.sound_slider.draw(screen) # Music slider self.music_slider.percent = self.music self.music_slider.rect.x = 450 self.music_slider.rect.y = 240 if self.index == 1: self.music_slider.color = APPLE_COLOR else: self.music_slider.color = BGCOLOR self.music_slider.draw(screen) # Graphics font = resources.get_font("round30") if self.classic: text_surf, text_rect = render_text("Classic /", font, APPLE_COLOR) text_rect.x, text_rect.y = 465, 300 else: text_surf, text_rect = render_text("/ Modern", font, APPLE_COLOR) text_rect.x, text_rect.y = 564, 300 screen.blit(text_surf, text_rect)
def render(self, screen: pygame.Surface): width, height = pygame.display.get_surface().get_size() # Display gameover message screen.fill(BGCOLOR) text_surf, text_rect = render_text("YOU LOST", resources.get_font("title100"), WHITE) text_rect.centerx, text_rect.y = width // 2, 110 screen.blit(text_surf, text_rect) text_surf, text_rect = render_text(f"Your score was {self.score}", resources.get_font("round30"), WHITE) text_rect.centerx, text_rect.y = width // 2, 270 screen.blit(text_surf, text_rect) if not self.record: accept = pygame.key.name(settings.get_key("accept")) finish = pygame.key.name(settings.get_key("pause")) text = (f"({accept.upper()} to replay," f" {finish.upper()} to exit menu)") text_surf, text_rect = render_text(text, resources.get_font("round30"), WHITE) text_rect.centerx, text_rect.y = width // 2, 325 screen.blit(text_surf, text_rect) else: # Highscore message text_surf, text_rect = render_text("New record!", resources.get_font("round30"), WHITE) text_rect.centerx, text_rect.y = width // 2, 345 screen.blit(text_surf, text_rect) text_surf, text_rect = render_text("Enter your initials: ", resources.get_font("round30"), WHITE) text_rect.centerx, text_rect.y = width // 2 - 58, 420 screen.blit(text_surf, text_rect) # Textbox input_box = pygame.Rect(width // 2 + 82, 415, 100, 35) screen.fill(BLACK, input_box) resources.get_font("round30").render_to( screen, (input_box.x + 15, input_box.y + 5), self.initials, WHITE) # Pun text_surf, text_rect = render_wrapped_text( self.joke, resources.get_font("normal25"), WHITE, True, 10, width - 150) text_rect.centerx, text_rect.y = width // 2, height - 130 screen.blit(text_surf, text_rect)
def render(self, screen): width = pygame.display.get_surface().get_width() screen.fill(BGCOLOR) # Draw background self.background.draw(screen) # Semitransparent surface behind title overlay = get_surface((width, 140), WHITE, 120) overlay_rect = overlay.get_rect() overlay_rect.centerx, overlay_rect.y = width // 2, 50 screen.blit(overlay, overlay_rect) # Title font = resources.get_font("title175") rd_text, rd_rect = render_text("SNAKE", font, BLACK) rd_rect.centerx, rd_rect.y = width // 2, 60 screen.blit(rd_text, rd_rect) pos_y = 280 # Semitransparent surface behind selected option overlay = get_surface((width, 50), BLACK, 150) overlay_rect = overlay.get_rect() overlay_rect.centerx = width // 2 overlay_rect.centery = pos_y + 60 * self.index + 60 * ( self.index == len(self.options) - 1) screen.blit(overlay, overlay_rect) for i, option in enumerate(self.options): # leave more space for last option 'Quit' if i == len(self.options) - 1: pos_y += 60 if i == self.index: # Selected color = APPLE_COLOR font = resources.get_font("round50") else: # Inactive color = BLACK font = resources.get_font("round40") rd_text, rd_rect = render_text(option[0], font, color) rd_rect.centerx, rd_rect.centery = (width // 2, pos_y + 60 * i) screen.blit(rd_text, rd_rect)
def render(self, screen): width, height = pygame.display.get_surface().get_size() if not self.is_paused and (not self.has_crashed or (self.has_crashed and not self.event_painted)): # Draw background if not settings.get_setting("classic"): screen.blit(self.background, (0, 0)) else: # Classic look screen.fill(BGCOLOR) # Draw snake, apple, grid self.sneik.draw(screen) self.apple.draw(screen) if self.show_grid: self.draw_grid(screen) if self.has_crashed: self.event_painted = True elif self.has_crashed: # Add snake blood self.sneik.draw_blood(screen) # Paint pause screen once elif not self.event_painted: # Darken the screen surf = get_surface((width, height), BLACK, 160) screen.blit(surf, (0, 0)) # Show pause message font = resources.get_font("title100") text_surf, text_rect = render_text("Paused", font, WHITE) text_rect.center = width // 2, 250 screen.blit(text_surf, text_rect) font = resources.get_font("round30") text_surf, text_rect = render_text( f"Score: {len(self.sneik.body) - 2}", font, WHITE) text_rect.center = width // 2, 330 screen.blit(text_surf, text_rect) self.event_painted = True
def render(self, screen): width, height = pygame.display.get_surface().get_size() screen.fill(BGCOLOR) font = resources.get_font("title80") rd_text, rd_rect = render_wrapped_text("Thanks for playing", font, WHITE, True, 10, width - 50) rd_rect.centerx, rd_rect.centery = width // 2, height // 2 - 20 screen.blit(rd_text, rd_rect) font = resources.get_font("normal30") rd_text, rd_rect = render_text("A game by @Alucebur", font, WHITE) rd_rect.x, rd_rect.y = 30, height - 40 screen.blit(rd_text, rd_rect)
#最大サイズ if 1024 * 512 < len(source): return render_text(u'error_size', status=413) author = request.remote_addr #データ登録 try: model.Match.get_or_insert(source, author=author) except model.ParseError, ex: logger.warn(ex) return render_text(u'error_data', status=415) except Exception, ex: logger.warn(ex) return render_text(u'error_data', status=415) return render_text(u'ok') @app.route('/match/<int:id>') def match(id): match = model.Match.get_by_id(id) abort_if(not match) return render('match.html', match=match) @app.route('/match/<int:id>/download') def match_download(id): match = model.Match.get_by_id(id) match_data = model.MatchData.get_by_id(id)
def render(self, screen: pygame.Surface): width = pygame.display.get_surface().get_width() screen.fill(BGCOLOR) text_surf, text_rect = render_text(f"Change Controls", resources.get_font("round50"), WHITE) text_rect.centerx, text_rect.y = width // 2, 50 screen.blit(text_surf, text_rect) # Display key list pos_y = 150 for i, option in enumerate(self.options): # Leave more space for last option if i == len(self.options) - 1: pos_y += 45 if i == self.index: # Selected color = APPLE_COLOR font = resources.get_font("round40") else: # Inactive color = WHITE font = resources.get_font("round30") text_surf, text_rect = render_text(option, font, color) text_rect.x, text_rect.y = (150, pos_y + 45 * i) screen.blit(text_surf, text_rect) # Display assigned key pos_y = 150 font = resources.get_font("round30") for i, option in enumerate(self.options[:-1]): action = option.lower() if 0 <= i <= 3: # Direction key key_par = { v: k for k, v in self.keys['direction'].items() if v == action } key_name = pygame.key.name(int(key_par[action])) else: # Action key key_name = pygame.key.name(self.keys[action]) # Changing key bind if self.changing and i == self.index: text_surf, text_rect = render_text("Press a key", font, APPLE_COLOR) text_rect.x, text_rect.y = (550, pos_y + 45 * i) screen.blit(text_surf, text_rect) else: # Display key name text_surf, text_rect = render_text( "- - - - - - - - - - - - - - " + key_name, font, WHITE) text_rect.x, text_rect.y = (270, pos_y + 45 * i) screen.blit(text_surf, text_rect)