def partie_perdue(hauteur_lave: int, générateur, liste_de_sprites: pygame.sprite.Group) -> None: """Vérifie si le joueur touche la lave, si oui, afficher qu'il a perdu puis le faire retourner au menu :param hauteur_lave: (int) la hauteur de la lave depuis le haut de la fenêtre de jeu :param générateur: le générateur de niveaux, l'accès est donné pour pouvoir afficher les platformes :param liste_de_sprites: une liste qui contient le joueur, permet d'afficher le joueur """ global niveau # Si le joueur touche la lave # Remet le niveau actif à 0 niveau = 0 # Dessiner tout le niveau et afficher qu'il a perdu générateur.draw() player.handle_keys() liste_de_sprites.update() liste_de_sprites.draw(screen) étiquette('Vous avez perdu!', 720, 400, 60) org_screen.blit(screen, (0, 0)) pygame.display.flip() sleep(1) # Faire attendre le joueur 3 secondes avant que le jeu ne le ramène au menu for i in range(3): screen.fill((0, 0, 0)) étiquette('Vous avez perdu!'.format(3 - i), 720, 400, 60) étiquette('Retour au menu dans {} secondes'.format(3 - i), 600, 500, 60) org_screen.blit(screen, (0, 0)) pygame.display.flip() sleep(1) # Retoune le joueur au menu principal menu_général()
def render(self, sprites: pygame.sprite.Group): self.display.fill((0, 0, 0)) for star in self.stars: pygame.draw.rect(self.display, (200, 200, 200), star) sprites.draw(self.display) pygame.display.update()
def draw(screen: pygame.Surface, background: pygame.Surface, framerate: int, all_sprites: pygame.sprite.Group, clock: pygame.time.Clock, grid: Grid, current_time: int, grid_visible: bool) -> None: screen.blit(background, [0, 0]) all_sprites.update() if grid_visible: grid.draw_grid(screen, current_time) all_sprites.draw(screen) pygame.display.flip() clock.tick(framerate)
def display_game(sprites: pygame.sprite.Group, live_blocks: Shape, solid_blocks: list): sprites.empty() for i in live_blocks: sprites.add(i) for i in solid_blocks: sprites.add(i) sprites.update() screen.blit(background, (0, 0)) sprites.draw(screen) pygame.display.flip()
def draw(sprites: pygame.sprite.Group, gas_bar: Bar, temp_bar: Bar, score: int): """ :param sprites: Group of stripes :param gas_bar: The gas bar that will be drawn :param temp_bar: The temp_bar that will be drawn :param score: The current score This function renders all sprites, bars and borders. """ WINDOW.fill(BACKGROUND_COLOR) sprites.draw(WINDOW) score_text = FONT.render(str(round(score)), True, WHITE_COLOR) WINDOW.blit(score_text, (SCREEN_SIZE[0] - score_text.get_width() - 20, 20)) gas_bar.draw(WINDOW) temp_bar.draw(WINDOW)
def update_screen(ai_settings: Settings, screen: pygame.Surface, stats: GameStats, sb: ScoreBoard, ship: Ship, aliens: pygame.sprite.Group, bullets: pygame.sprite.Group, play_button: Button) -> NoReturn: """更新屏幕上的图像,并切换到新屏幕""" # 每次循环时都重绘屏幕 screen.fill(ai_settings.bg_color) # 在飞船和外星人后面重绘所有子弹 for bullet in bullets.sprites(): bullet.draw_bullet() ship.blitme() aliens.draw(screen) # 显示得分 sb.show_score() # 如果游戏处于非活动状态,就绘制Play按钮 if not stats.game_active: play_button.draw_button() # 让最近绘制的屏幕可见 pygame.display.flip()