def run_game(): # Init a game and create screen object pygame.init() pygame.display.set_caption("Alien Invasion") ai_settings = Settings() # ai_settings means Alien Invasion Settings screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) play_button = Button(ai_settings, screen, "Play") aliens = Group() ship = Ship(ai_settings, screen) bullets = Group() stats = GameStats(ai_settings) sb = Scoreboard(ai_settings, screen, stats) gf.create_fleet(ai_settings, screen, ship, aliens) # Main loop for the game 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, sb, stats, ship, aliens, bullets) gf.update_aliens(ai_settings, stats, screen, sb, ship, aliens, bullets) gf.update_screen(ai_settings, screen, sb, stats, ship, aliens, bullets, play_button)
def run_game(): #初始化游戏并创建一个屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") #创建一艘飞船 ship = Ship(ai_settings, screen) #创建一个用于存储子弹的编组 bullets = Group() #创建一个外星人 aliens = Group() gf.create_fleet(ai_settings, screen, aliens) # 开始游戏的主循环 while True: #监视键盘和鼠标事件 gf.check_events(ai_settings, screen, ship, bullets) ship.update() gf.update_bullets(bullets) # 每次循环时都重绘屏幕 gf.update_screen(ai_settings, screen, ship, aliens, bullets)
def run_game(): '''初始化游戏,并创建一个屏幕对象''' # 初始化背景设置 pygame.init() # 创建screen 窗口,并指定游戏窗口的尺寸 # screen 是一个surface,在py中,surface是屏幕的一部分,用于显示游戏元素 # 游戏中的每一个元素都是 surface #screen = pygame.display.set_mode((1200,800)) # 法2:通过settings类实例进行屏幕的绘制 # 设置项目归为一个类 ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) # 设置框t体标题 pygame.display.set_caption("Alien Invasion") # 创建一艘飞船 ship = Ship(ai_settings, screen) # 创建一个用于存储子弹的编组 bullets = Group() # 设置背景色 #bg_color = (230,230,230) # 开始游戏的主循环,没经过一次循环都将自动重绘这个surface while True: # 监视键盘和鼠标事件 ''' for event in pygame.event.get(): # 点击“关闭”按钮 if event.type == pygame.QUIT: sys.exit() # 退出游戏 ''' # 取得标志位 #gf.check_evects(ship) gf.check_events(ai_settings, screen, ship, bullets) # 根据标志位,调用update()方法,进行飞船的移动 ship.update() bullets.update() # 循环 重绘屏幕,用背景色进行填充 #screen.fill(bg_color) # 法2: ''' screen.fill(ai_settings.bg_color) ship.blitem() # 将飞机绘制到屏幕上 # 让最近绘制的屏幕可见,则将不断更新屏幕,以显示元素的新位置,并在原来的位置隐藏元素,营造平滑移动的效果 pygame.display.flip() ''' # 删除已消失的子弹 for bullet in bullets.copy(): if bullet.rect.bottom <= 0: bullets.remove(bullet) print(bullets) gf.update_screen(ai_settings, screen, ship, bullets)
def run_game(): """"Runs the game""" pygame.init() settings = Settings() screen = pygame.display.set_mode((settings.width, settings.height)) pygame.display.set_caption("Alien Invasion: Cirno Edition") # Make a ship ship = Ship(screen, settings) # Make a group for bullets and aliens, used for storing bullets = Group() aliens = Group() gf.create_fleet(settings, screen, ship, aliens) while True: gf.check_events(screen, settings, ship, bullets) ship.update() bullets.update() gf.update_aliens(settings, aliens) gf.remove_bullet(bullets) gf.update_screen(settings, screen, ship, aliens, bullets) gf.check_mouse_collision(aliens, bullets)
def prep_ships(self): self.ships = Group() for ship_number in range(self.stats.ship_left): ship = Ship(self.ai_settings, self.screen) ship.rect.x = 10 + ship_number * ship.rect.width ship.rect.y = 10 self.ships.add(ship)
def __init__(self, ai_settings: Settings, stats: GameStats, **kwargs: game_items_types): """Initialize with default items unless specified in kwargs.""" # Default initializations for game items. # Initialize screen. flags = pygame.HWSURFACE | pygame.DOUBLEBUF # | pygame.FULLSCREEN self.screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height), flags) pygame.display.set_caption("Alien Invasion Game") # Initialize ship. self.ship = Ship(ai_settings, self.screen) # Initialize aliens group. self.aliens = Group() # Initialize bullets group. self.bullets = Group() # Initialize buttons. self.play_button = Button(self.screen, "Play!") # TODO implement Restart and Cancel buttons. # self.restart_button = Button(self.screen, "Restart") # self.cancel_button = Button(self.screen, "Cancel", (255, 0, 0, 80)) # self.set_button_pos() # Initialize scorecard. self.sb = Scorecard(ai_settings, stats, self.screen) # Set the game items for those default values are given. for game_item in kwargs: if game_item in self.acceptable_game_items: self.__setattr__(game_item, kwargs[game_item])
def ran_game(): #初始化游戏并且创建一屏幕个对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") #设置背景颜色 bg_color = (ai_settings.bg_color) #创建一艘飞船 ship = Ship(ai_settings, screen) #开始游戏的主循环 while True: #监视键盘和鼠标事件 game_functions.check_events(ship) ship.update() #每次循环都重绘制屏幕 game_functions.update_screen(ai_settings, screen, ship)
def prep_ships(self): """Show how many ships are left.""" ship_str = "Ships left: " if self.stats.ships_left > 0 else "No ships left." self.ship_str_image = self.font.render(ship_str, True, self.font_color) self.ship_str_rect = self.ship_str_image.get_rect() self.ship_str_rect.x = 10 self.ship_str_rect.y = self.score_rect.top self.ships = Group() for ship_number in range(self.stats.ships_left): ship = Ship(self.ai_settings, self.screen, self.score_ship_size) ship.rect.x = self.ship_str_rect.width + ship_number * ship.rect.width ship.rect.centery = self.ship_str_rect.centery self.ships.add(ship)
def check_keyup_events(event: EventType, ship: Ship): """Respond when key is stopped being pressed.""" if event.key == pygame.K_RIGHT: ship.moving_right = False elif event.key == pygame.K_LEFT: ship.moving_left = False