alien_invasion.py
#初始化pygame\设置以及屏幕对象
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode(
(ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
#创建Play按钮
play_button = Button(ai_settings,screen,"Play")
#创建一个用于存储游戏统计信息实例 创建记分牌
stats = GameStats(ai_settings)
sb = Scoreboard(ai_settings,screen,stats)
#创建一艘飞船
ship = Ship(ai_settings,screen)
#创建一个用于存储子弹的编组 外星人编组
bullets = Group()
aliens = Group()
#创建外星群
gf.create_fleet(ai_settings,screen,ship,aliens)
#开始游戏的主循环
while True:
gf.check_events(ai_settings,screen,stats,sb,play_button,ship,
aliens,bullets)
if stats.game_active:
ship.update()
gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets)
gf.update_aliens(ai_settings,screen,stats,sb,ship,aliens,bullets)
gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,
play_button)
#每次循环都重绘制屏幕
run_game()
#settings.py
def __init__(self):
"""初始化游戏的设置"""
#屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (255,215,0)
#飞船设置
self.ship_limit = 1
#子弹设置
self.bullet_width = 10
self.bullet_height = 15
self.bullet_color = 255,140,0
self.bullet_allowed = 10
#子弹设置
self.fleet_drop_speed = 10
#节奏
self.speedup_scale = 1.1
self.initialize_dynamic_settings()
#fleet_direction为1表示向右移 为 -1表示向左移
self.fleet_direction = 1
#加快游戏节奏的速度
self.speedup_scale = 1.1
#外星人点数的提高速度
self.score_scale = 1.5
self.initialize_dynamic_settings()
def increase_speed(self):
"""提高速度设置外星人点数"""
self.ship_speed_factor *= self.speedup_scale
self.bullet_speed_factor *= self.speedup_scale
self.alien_speed_factor *= self.speedup_scale
self.alien_points = int(self.alien_points * self.score_scale)
def initialize_dynamic_settings(self):
"""初始化随游戏进行而变化得设置"""
self.ship_speed_factor = 1.5
self.bullet_speed_factor = 1
self.alien_speed_factor = 2
#fleet_direction为1表示向右-1向左
self.fleet_direction = 1
#计分
self.alien_points = 50
def increase_speed(self):
"""提高速度设置"""
self.ship_speed_factor *= self.speedup_scale
self.bullet_speed_factor *= self.speedup_scale
self.alien_speed_factor *= self.speedup_scale
self.alien_points = int(self.alien_points * self.score_scale)
print(self.alien_points)