def run_game(): # init game and create screen object pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion") # create a new ship ship = Ship(ai_settings, screen) aliens = Group() # create alien's group gf.create_fleet(ai_settings, screen, ship, aliens) # create a group to store the bullet bullets = Group() # start game's main circulation while True: # listen mouse and keyboard gf.check_events(ai_settings, screen, ship, bullets) ship.update() gf.update_bullets(aliens, bullets) gf.update_aliens(ai_settings, aliens) # redraw screen every circulation # let last screen be visible gf.update_screen(ai_settings, screen, ship, aliens, bullets)
def run_game(): # 初始化游戏并创建一个屏幕对象 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) # screen = pygame.display.set_mode((1200, 800)) pygame.display.set_caption("Alian Invasion") # 创建Play按钮 play_button = Button(ai_settings, screen, "Play") # 设置背景颜色 bg_color = (85, 204, 220) # 创建一艘飞船 ship = Ship(ai_settings, screen) # 创建一个用于存储子弹的编组 bullets = Group() # 创建一艘飞船、一个子弹编组和一个外星人编组 aliens = Group() # 创建一个外星人 alien = Alien(ai_settings, screen) # 开始游戏的主循环 while True: gf.check_events(ai_settings, screen, play_button, ship, bullets) ship.update() # bullets.update() # 删除已消失的子弹 # for bullet in bullets.copy(): # if bullet.rect.bottom <= 0: # bullet.remove(bullet) print(len(bullets)) gf.update_bullets(bullets) gf.update_screen(ai_settings, screen, ship, alien, bullets, play_button) gf.update_screen(ai_settings, screen, ship, aliens, bullets) # 创建外星人群 gf.create_fleet(ai_settings, screen, ship, aliens) # 监视键盘和鼠标事件 for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exeit() # 每次循环时都重绘屏幕 screen.fill(ai_settings.bg_color) # screen.fill(bg_color) ship.blitme() # 让最终绘制的屏幕可见 pygame.display.flip()
def run_game(): # Inicializa o jogo e cria um objeto para a tela pygame.init() ai_settings = Settings() screen = pygame.display.set_mode(( ai_settings.screen_width, ai_settings.screen_height, )) pygame.display.set_caption('Alien Invasion') # Cria o botão Play play_button = Button(ai_settings, screen, 'Play') # Cria uma instância para armazenar dados estatísticos do jogo stats = GameStats(ai_settings) sb = Scoreboard(ai_settings, screen, stats) # Cria uma espaçonave, um grupo de projéteis e um grupo de alienígenas ship = Ship(ai_settings, screen) bullets = Group() aliens = Group() # Cria a frota de alienígenas gf.create_fleet(ai_settings, screen, ship, aliens) # Inicia o laço principal do jogo 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, )
def run_game(): # Initialize game and create a screen object. pygame.init() settings = Settings() screen = pygame.display.set_mode( (settings.screen_width, settings.screen_heigth)) pygame.display.set_caption("Alien Invasion 3000") ship = Ship(screen) # Start the main loop for the game. while True: gf.check_events(ship) gf.update_screen(settings, screen, ship)
def run_game(): ai_settings = settings.Settings() # 初始化游戏,创建一个屏幕对象 pygame.init() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) ship = sp.Ship(screen, ai_settings) # 创建存储子弹的编组 bullets = Group() pygame.display.set_caption('Alien Invasion') # 开始游戏主循环 while True: gf.check_events(ship, ai_settings, screen, bullets) ship.update() gf.update_bullets(bullets) gf.update_screen(ai_settings, screen, ship, bullets)
def run_game(): ''' 开始游戏 ''' global Login_username tick = 0 zombieList = [Zombie, Zombie1, Zombie3, Zombie4, Zombie5] while 1: # 开始监听事件 gf.check_events(screen, game_settings, squares, plants, bullets, icons) # 如果游戏没结束 if game_settings.game_active: tick += 1 # 如果满足添加僵尸的条件就添加僵尸 if tick % game_settings.addZombieTime == 0 and game_settings.total_zombie: if game_settings.level == 1: # 在0-1号僵尸中随机添加一个 zombie = zombieList[randint(0, 1)] zombies.add(zombie(screen, game_settings)) elif game_settings.level == 2: # 在0-3号僵尸中随机添加一个 zombie = zombieList[randint(0, 3)] zombies.add(zombie(screen, game_settings)) elif game_settings.level == 3: zombie = zombieList[randint(0, 4)] zombies.add(zombie(screen, game_settings)) game_settings.total_zombie -= 1 # 僵尸同子弹的碰撞检测 zombies_hit = groupcollide(zombies, bullets, False, False) for zombie in zombies_hit: if zombie.yard_row == zombies_hit[zombie][0].yard_row: bullets.remove(zombies_hit[zombie][0]) zombie.hit(1) if (zombie.health <= 0): zombies.remove(zombie) game_settings.zombie_in_row[zombie.yard_row] -= 1 game_settings.zombies_killed += 1 zombies_eating = groupcollide(zombies, plants, False, False) for zombie in zombies_eating: damaged_plant = zombies_eating[zombie][0] if zombie.yard_row == damaged_plant.yard_row: zombie.moving = False if time.time( ) - zombie.started_eating > zombie.damage_time: zombie.zombie_chomp(damaged_plant) zombie.started_eating = time.time() if damaged_plant.health <= 0: plants.remove(damaged_plant) zombie.moving = True if game_settings.game_active and game_settings.total_zombie == 0: global game_level game_settings.level += 1 game_level += 1 # 更新分数 db.updateScore(Login_username, game_settings.level * game_settings.zombies_killed) print_text(screen, "WIN!", "Next Level " + str(game_settings.level)) return elif game_settings.game_active is False: db.updateScore(Login_username, game_settings.level * game_settings.zombies_killed) print_text(screen, "Game Over!", '') return gf.update_screen(screen, game_settings, background, zombies, squares, plants, bullets, tick, icons) pygame.display.flip()