0
点赞
收藏
分享

微信扫一扫

摸底谷歌Gemini:CMU全面测评,Gemini Pro不敌GPT 3.5 Turbo

时光已翩然轻擦 2023-12-26 阅读 21

目录

scoreboard.py

game_functions.py

game_functions.py

14.3.8 显示等级

game_stats.py

scoreboard.py

scoreboard.py

scoreboard.py

game_functions.py

game_functions.py

alien_invasion.py

14.3.9 显示余下的飞船数

ship.py

scoreboard.py


 

 def show_score(self):
 """在屏幕上显示当前得分和最高得分"""
 self.screen.blit(self.score_image, self.score_rect)
 self.screen.blit(self.high_score_image, self.high_score_rect) 
def check_bullet_alien_collisions(ai_settings, screen, stats, sb, ship,
 aliens, bullets):
 --snip--
 if collisions:
 for aliens in collisions.values():
 stats.score += ai_settings.alien_points * len(aliens)
 sb.prep_score()
 check_high_score(stats, sb)
 --snip-- 

14.3.8 显示等级

 def reset_stats(self):
 """初始化随游戏进行可能变化的统计信息"""
 self.ships_left = self.ai_settings.ship_limit
 self.score = 0
 self.level = 1
 def __init__(self, ai_settings, screen, stats):
 --snip--
 # 准备包含得分的初始图像
 self.prep_score()
 self.prep_high_score()
 self.prep_level() 
 def prep_level(self):
 """将等级转换为渲染的图像"""
1 self.level_image = self.font.render(str(self.stats.level), True,
 self.text_color, self.ai_settings.bg_color)
 # 将等级放在得分下方
 self.level_rect = self.level_image.get_rect()
2 self.level_rect.right = self.score_rect.right
3 self.level_rect.top = self.score_rect.bottom + 10
 def show_score(self):
 """在屏幕上显示飞船和得分"""
self.screen.blit(self.score_image, self.score_rect)
self.screen.blit(self.high_score_image, self.high_score_rect)
 self.screen.blit(self.level_image, self.level_rect)
def check_bullet_alien_collisions(ai_settings, screen, stats, sb, ship,
 aliens, bullets):
 --snip--
 if len(aliens) == 0:
 # 如果整群外星人都被消灭,就提高一个等级
 bullets.empty()
 ai_settings.increase_speed()
 # 提高等级
1 stats.level += 1
2 sb.prep_level()
 create_fleet(ai_settings, screen, ship, aliens)
def check_play_button(ai_settings, screen, stats, sb, play_button, ship, 
 aliens, bullets, mouse_x, mouse_y):
 """在玩家单击Play按钮时开始新游戏"""
 button_clicked = play_button.rect.collidepoint(mouse_x, mouse_y)
 if button_clicked and not stats.game_active:
 --snip--
 # 重置游戏统计信息
 stats.reset_stats()
 stats.game_active = True
 # 重置记分牌图像
1 sb.prep_score()
 sb.prep_high_score()
 sb.prep_level()
 # 清空外星人列表和子弹列表
 aliens.empty()
 bullets.empty()
 --snip-- 
def check_events(ai_settings, screen, stats, sb, play_button, ship, aliens,
 bullets):
 """响应按键和鼠标事件"""
 for event in pygame.event.get():
 if event.type == pygame.QUIT:
 --snip--
 elif event.type == pygame.MOUSEBUTTONDOWN:
 mouse_x, mouse_y = pygame.mouse.get_pos()
1 check_play_button(ai_settings, screen, stats, sb, play_button,
 ship, aliens, bullets, mouse_x, mouse_y) 
 # 开始游戏主循环
 while True:
 gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
 aliens, bullets)
 --snip--

现在你可以知道升到多少级了,如图14-5所示。


注意

在一些经典游戏中,得分带标签,如Score、High Score和Level。我们没有显示这些标签, 因为开始玩这款游戏后,每个数字的含义将一目了然。要包含这些标签,只需在Scoreboard 中调用font.render()前,将它们添加到得分字符串中即可。


14.3.9 显示余下的飞船数

import pygame
from pygame.sprite import Sprite
1 class Ship(Sprite):
 def __init__(self, ai_settings, screen):
 """初始化飞船,并设置其起始位置"""
2 super(Ship, self).__init__()
 --snip-- 
import pygame.font
from pygame.sprite import Group
from ship import Ship
class Scoreboard():
 """报告得分信息的类"""
 def __init__(self, ai_settings, screen, stats):
 --snip--
 self.prep_level()
 self.prep_ships()
 --snip-- 
 def prep_ships(self):
 """显示还余下多少艘飞船"""
1 self.ships = Group()
2 for ship_number in range(self.stats.ships_left):
 ship = Ship(self.ai_settings, self.screen)
3 ship.rect.x = 10 + ship_number * ship.rect.width
4 ship.rect.y = 10
5 self.ships.add(ship) 
def show_score(self):
 --snip--
 self.screen.blit(self.level_image, self.level_rect)
 # 绘制飞船
 self.ships.draw(self.screen)
举报

相关推荐

0 条评论