Example #1
0
    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)
Example #2
0
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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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
Example #7
0
    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)
Example #8
0
  
  #最大サイズ
  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)
Example #9
0
    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)