Пример #1
0
    def __init__(self, isfullscreen=False):
        pygame.init()
        self.settings = Settings()
        self.status = GameStatus(self)

        if not isfullscreen:
            self.screen = pygame.display.set_mode(
                (self.settings.width, self.settings.height))  #character
        else:
            self.screen = pygame.display.set_mode()
            self.settings.width = self.screen.get_rect().width
            self.settings.width = self.screen.get_rect().height

        self.screen_rect = self.screen.get_rect()
        self.button = Button(self, "Play")
        self.scoreboard = ScoreBoard(self)

        pygame.display.set_caption("外星人入侵 v3.0")

        self.ship = Ship(self)
        self.bullets = pygame.sprite.Group()
        self.autofire = False
        self.aliens = pygame.sprite.Group()
        self.isboss_flag = False
        self.alien_boss = AlienBoss(self)
        self.boss_bullets = pygame.sprite.Group()

        self.boss_skill_num = self.settings.bullet_boss_skill_num

        self.props = pygame.sprite.Group()

        self.count = 0
        self.count2 = 0
Пример #2
0
    def get_game_statuses(self, sql_dao):
        urls = self.build_urls()

        game_statuses = []
        for day, url in urls.items():
            print('Checking {} ...'.format(day))
            try:
                request = Request(url, headers={'User-Agent': "Magic Browser"})
                connection = urlopen(request)

                soup = BeautifulSoup(connection, 'html.parser')
                game_status_button = soup.find('a',
                                               attrs={'class': 'more-info'})

                is_game_sold_out = bool(
                    game_status_button
                    and self.SOLD_OUT in game_status_button.text)
                game_status = GameStatus(day, url, is_game_sold_out, sql_dao)
                game_statuses.append(game_status)
                game_status.set_prior_game_availability()

                # If this game never existed lets insert it.
                if game_status.was_game_sold_out is None:
                    game_status.insert_game()

            except Exception as e:
                game_status = GameStatus(day, url, None, sql_dao)
                game_statuses.append(game_status)

        print("All Hockey Games: ")
        print(sql_dao.get_hockey_games())

        return game_statuses
Пример #3
0
def run():
    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    pygame.display.set_caption("catch ball")
    bg_color = (255, 255, 255)
    ship = Ship(screen)
    function = BallFunctions()
    b = Group()
    ship = Group()
    game_status = GameStatus()
    while True:
        game_status.check_active()
        if game_status.game_active:
            function.update_screen(screen, ship, bg_color, b, game_status)
        else:
            sys.exit()
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")

    # 创建统计信息的实例
    status = GameStatus(ai_settings)

    # 创建飞船
    ship = Ship(ai_settings, screen)
    # alien = Alien(ai_settings, screen)
    # 创建一个存储子弹的编组
    bullets = Group()
    aliens = Group()
    # 创建外星人群
    gf.create_fleet(ai_settings, screen, ship, aliens)
    # 开始循环
    while True:
        gf.check_events(ai_settings, screen, ship, bullets)
        ship.update()
        gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
        gf.update_aliens(ai_settings, status, screen, ship, aliens, bullets)
        gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Пример #5
0
def run_game():
    #init pygame, settings and screen
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    play_button = Button(ai_settings, screen, "Play")

    stats = GameStatus(ai_settings)
    sb = ScoreBoard(ai_settings, screen, stats)
    #create a ship
    ship = Ship(ai_settings, screen)
    #create alien groups
    aliens = Group()
    gf.create_fleet(ai_settings, screen, ship, aliens)
    #create bullet groups
    bullets = Group()

    #game main loop
    while True:
        #monitor keyboard and mouse event
        gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
                        aliens, bullets)
        if stats.game_active:
            ship.update()
            #update bullets first to check if bullets meet any alien
            gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
                              bullets)
            gf.update_aliens(ai_settings, stats, screen, sb, ship, aliens,
                             bullets)
        gf.update_screen(ai_settings, screen, stats, sb, ship, aliens, bullets,
                         play_button)
Пример #6
0
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')

	# 创建play按钮
	play_button=Button(ai_settings,screen,"Play")

	#设置背景色
	ai_settings.bg_color=(230,230,230)

	#创建一个飞船
	ship=Ship(ai_settings,screen)
	#创建一个用于存储子弹的元组
	bullets=Group()
	#创建一个外星人
	alien=Alien(ai_settings,screen)
	#创建一个外星人编组,储存所有的外星人
	aliens=Group()
	gf.create_fleet(ai_settings,screen,ship,aliens)

	#创建一个用于存储游戏统计信息的实例,和计分板
	stats=GameStatus(ai_settings)
	sb=Scoreboard(ai_settings,screen,stats)

	#开始游戏主循环
	while True:
		gf.check_events(ai_settings,screen,stats,play_button,ship,aliens,bullets)
		gf.update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets,play_button)
		if stats.game_active==True:
			ship.update()
			gf.update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets)
			gf.update_aliens(ai_settings,stats,screen,ship,aliens,bullets)
Пример #7
0
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("Super Mario")

    # 创建马里奥
    mario = Mario(screen, ai_settings)

    # 创建一个用于存储游戏统计信息的实例
    status = GameStatus(ai_settings)

    # 创建一个蘑菇
    mushroom = Mushroom(screen, ai_settings, status)

    # 开始游戏的主循环
    while True:
        # 监视键盘和鼠标事件

        gf.check_events(mario)
        if status.game_active:
            mario.update()
            gf.check_mario_mushroom_collisions(mario, mushroom)
            mushroom.update(status)
        gf.update_screen(ai_settings, screen, mario, mushroom)
Пример #8
0
def run_game():
    # init
    pygame.display.set_caption("Alien Invasion")
    pygame.init()
    gameSettings = Settings()
    # 创建一个用于存储游戏统计信息的实例
    status = GameStatus(gameSettings)
    screen = pygame.display.set_mode(
        (gameSettings.screen_width, gameSettings.screen_height))
    sb = Scoreboard(gameSettings, screen, status)
    # create the ship
    ship = Ship(gameSettings, screen)
    # create a group to store bullet
    bullets = Group()
    # create an alien
    aliens = Group()
    gf.create_fleet(gameSettings, screen, aliens, ship)

    # 创建Play按钮
    play_button = Button(gameSettings, screen, "Play")
    while True:
        # check the event
        gf.check_events(gameSettings, screen, ship, bullets, status,
                        play_button, aliens, sb)
        # update the ship and bullets
        if status.game_active:
            ship.update()
            gf.update_bullets(aliens, bullets, screen, ship, gameSettings,
                              status, sb)
            gf.update_aliens(gameSettings, aliens, ship, status, screen,
                             bullets, sb)
        #  update the screen
        gf.update_screen(gameSettings, screen, ship, bullets, aliens, status,
                         play_button, sb)
Пример #9
0
def run_game():
    pygame.init()
    settings = Settings()
    os.environ["SDL_VIDEO_WINDOW_POS"] = "%d, %d" % (settings.screen_left,
                                                     settings.screen_top)
    screen = pygame.display.set_mode(
        (settings.screen_width, settings.screen_height))
    pygame.display.set_caption('外星人入侵')
    ship = Ship(screen, settings.ship_speed_factor)
    bullets = Group()
    aliens = Group()
    gf.creat_aliens(aliens, screen, settings)
    status = GameStatus(settings)
    game_info = GameInfo(screen, ship, settings, 0, len(aliens), status)
    buttons = Buttons(screen)
    pop_msg = ScreenPopMsg(screen)

    while True:
        gf.check_events(screen, ship, aliens, settings, bullets, buttons,
                        status, game_info)
        gf.check_game_status(status)
        if status.game_alive == 2:
            gf.check_game_hit(ship, aliens, bullets, status,
                              settings.screen_height, game_info)
            ship.update()
            gf.update_bullets(bullets)
            gf.update_aliens(aliens, bullets, screen, settings,
                             status.game_alive)
            game_info.prep_statusbar(len(bullets), len(aliens))
            gf.check_fire(bullets, aliens, settings, status, game_info)

        gf.update_screen(settings, screen, ship, game_info, bullets, aliens,
                         buttons, status, pop_msg)
Пример #10
0
def run_game():
    pygame.init()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption('Alion Tnvasion')

    play_button = Button(screen, 'Play')
    status = GameStatus(ai_settings)
    sb = ScoreBoard(ai_settings, screen, status)
    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, status, ship, aliens, bullets,
                        play_button, sb)

        if status.game_active == True:
            ship.update()
            gf.update_bullets(ai_settings, screen, status, ship, aliens,
                              bullets, sb)
            gf.update_aliens(ai_settings, screen, status, ship, aliens,
                             bullets, sb)

        gf.update_screen(ai_settings, screen, status, ship, aliens, bullets,
                         play_button, sb)
Пример #11
0
def run_game():
    """#初始化游戏并创建一个屏幕对象"""
    setting = Settings()
    pygame.init()
    screen = pygame.display.set_mode(
        (setting.screen_width, setting.screen_height))
    pygame.display.set_caption("Alien Invasion")
    #创建一个用于存储游戏的统计信息的实例
    status = GameStatus(setting)
    sb = Scoreboard(setting, screen, status)
    """创建一艘飞船"""
    ship = Ship(setting, screen)
    bullets = Group()
    stars = Group()
    aliens = Group()
    gf.addGroupStars(setting, screen, stars)
    """创建外星人群"""
    gf.create_fleet(setting, screen, ship, aliens)
    #创建play按钮
    playBtn = Button(setting, screen, "play")
    #开始游戏的主循环
    while True:
        #监视键盘和鼠标事件
        gf.check_events(setting, screen, ship, status, aliens, bullets,
                        playBtn, sb)
        if status.game_active:
            ship.update()  #更新飞船的位置
            gf.update_bullets(setting, screen, ship, aliens, bullets, status,
                              sb)
            gf.update_aliens(setting, status, screen, ship, aliens, bullets,
                             sb)
        #刷新屏幕
        gf.update_screen(setting, screen, ship, aliens, bullets, stars, status,
                         playBtn, sb)
Пример #12
0
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, ship, aliens)
    # 创建一个用于存储游戏统计信息的实例,并创建记分牌
    status = GameStatus(ai_settings)
    sb = ScoreBoard(ai_settings, screen, status)
    # 创建Play按钮
    play_button = Button(ai_settings, screen, "Play")

    # 开始游戏的主循环
    while True:
        # 监视键盘和鼠标事件
        gf.check_events(ai_settings, screen, status, sb, play_button, ship,
                        aliens, bullets)
        if status.game_active:
            ship.update()
            gf.update_aliens(ai_settings, screen, status, sb, ship, aliens,
                             bullets)
            gf.update_bullets(ai_settings, screen, status, sb, ship, aliens,
                              bullets)

        gf.update_screen(ai_settings, screen, status, sb, ship, aliens,
                         bullets, play_button)
Пример #13
0
def run_game():
    '''初始化屏幕并创建一个屏幕对象'''
    pygame.init()
    ai_set = Setting()
    screen = pygame.display.set_mode(
        (ai_set.screen_width, ai_set.screen_height))
    pygame.display.set_caption('Alien Invasion')
    # bg_color = (230,230,230)
    # 创建一艘飞船、一个子弹编组和一个外星人编组
    ship = Ship(ai_set, screen)
    bullets = Group()
    aliens = Group()
    #创建外星人实例
    gf.create_fleet(ai_set, screen, ship, aliens)
    #创建一个用于存储游戏统计信息的实例
    status = GameStatus(ai_set)
    sb = Scoreboard(ai_set, screen, status)
    #创建play按钮
    play_button = Button(ai_set, screen, 'Play')
    #

    #游戏主循环开始
    while True:
        #监控键盘和鼠标事件
        gf.check_events(ai_set, screen, ship, bullets, status, play_button,
                        aliens, sb)
        if status.game_active:
            ship.update()
            gf.update_bullets(ai_set, screen, ship, aliens, bullets, status,
                              sb)
            gf.update_aliens(aliens, ai_set, ship, status, bullets, screen, sb)
        gf.update_screen(ai_set, screen, ship, aliens, bullets, play_button,
                         status, sb)
Пример #14
0
    def __init__(self, difficulty, square_size):
        """Konstruktori, joka luo GameLoop-olion.

        Args:
            difficulty (Difficulty): Vaikeustaso-olio, joka kertoo peliruutujen määrän ja
            sen myötä pelinäytön koon yhdessä peliruudukon ruutujen koon kanssa.           
            square_size (int): Kokonaisluku, joka kertoo yhden peliruudun koon.
        """
        self._difficulty = difficulty
        self._square_size = square_size
        self._gameview = None
        self._display = None
        self._game_status = GameStatus()
        self._scores_service = ScoresService()
        self._stop = None
        self._clock = None
        self._build_game()
Пример #15
0
def run_game():
	#初始化游戏并创建一个屏幕对象
	pygame.init();
	
	ai_setting = Setting();
	
	screen = pygame.display.set_mode((ai_setting.screen_width,ai_setting.screen_height));
	pygame.display.set_caption("alien_invasion");
	
	#创建play按钮
	play_button = Button(ai_setting,screen,"Play");
	
	#创建一个用于存储游戏统计信息的实例
	status = GameStatus(ai_setting);
	#创建计分实例
	sb = ScoreBoard(ai_setting,screen,status);
	
	#创建一艘飞船
	ship = Ship(ai_setting,screen);
	#创建一个外星人
	#alien = Alien(ai_setting,screen);
	
	#创建一个用于存放子弹的组
	bullets = Group();
	
	#设置背景色
	#bg_color = (230,230,230);
	
	#创建一个用于存放外星人的组
	aliens = Group();
	#创建外星人群
	gf.create_fleet(ai_setting,screen,ship,aliens);
	
	#开始游戏主循环
	while True:
		
		#监视键盘和鼠标事件
		gf.check_events(ai_setting,screen,status,sb,play_button,ship,aliens,bullets);
		#还有飞船的时候更新
		if status.game_active:
			#更新飞船位置
			ship.update();
			
			
			#更新外星人位置
			gf.update_aliens(ai_setting,status,sb,screen,ship,aliens,bullets);
			
			#更新子弹信息
			gf.update_bullets(ai_setting,screen,status,sb,ship,aliens,bullets);
		
		#刷新屏幕
		gf.update_screen(ai_setting,screen,status,sb,ship,aliens,bullets,play_button);
Пример #16
0
    def __init__(self):
        pygame.init()
        self.my_setting = Settings()

        self.screen = pygame.display.set_mode(
            (self.my_setting.screen_width, self.my_setting.screen_height))
        pygame.display.set_caption('Alien Invasion')
        self.color = self.my_setting.bg_color
        '''放在初始化完成下面'''
        self.ship = Ship(self)
        '''子弹'''
        self.bullets = pygame.sprite.Group()
        self.is_bulleting = False
        '''外星人'''
        self.aliens = pygame.sprite.Group()
        self._build_aliens()
        '''游戏状态'''
        self.status = GameStatus(self)
        '''play按钮'''
        self.play_button = Button(self, 'Play')
        '''分数按钮'''
        self.sb = ScoreBoard(self)
Пример #17
0
def run_game():

    #初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width,
         ai_settings.screen_height))  # ((width,height),x,y)默认0,0
    pygame.display.set_caption("《外星人入侵》")

    # 创建开始按钮
    play_button = Button(ai_settings, screen, "开始游戏")
    # pygame.font.get_fonts(),输出本机自带的字体

    # # 创建存储游戏统计信息的实例,并创建记分牌
    status = GameStatus(ai_settings)
    sb = Scoreboard(ai_settings, screen, status)

    # 创建一艘飞船
    ship = Ship(ai_settings, screen)

    # 创建一个用于存储子弹的编组
    bullets = Group()

    # 创建一个用于存储外星人的编组
    aliens = Group()

    # 创建外星人群
    gf.create_fleet(ai_settings, screen, ship, aliens)

    # 创建外星人爆炸帧动画
    explosion = Group()

    # 创建飞船爆炸帧动画
    destroyed = Group()

    # 随机产生一个背景
    once = True
    # 开始游戏的主循环
    while True:
        gf.check_events(ai_settings, screen, status, sb, play_button, ship,
                        aliens, bullets)
        if status.game_active:
            ship.update()
            gf.update_bullets(ai_settings, screen, status, sb, ship, aliens,
                              bullets, explosion)
            gf.update_aliens(ai_settings, screen, status, sb, ship, aliens,
                             bullets, explosion, destroyed)
        gf.update_screen(ai_settings, screen, status, sb, ship, aliens,
                         bullets, explosion, destroyed, play_button, once)
Пример #18
0
    def test_if_difficulties_have_right_sizes_and_amoud_of_mines(self):
        self.random_view.push_left_button(0, 0)
        height1 = self.random_view.height
        width1 = self.random_view.width
        mines1 = len(self.random_view.grid.give_mines_locations())

        self.difficulty.medium()
        self.game_status = GameStatus()
        self.random_view = ViewGrid(self.difficulty, self.game_status)
        self.random_view.push_left_button(0, 0)
        height2 = self.random_view.height
        width2 = self.random_view.width
        mines2 = len(self.random_view.grid.give_mines_locations())

        self.difficulty.hard()
        self.game_status = GameStatus()
        self.random_view = ViewGrid(self.difficulty, self.game_status)
        self.random_view.push_left_button(0, 0)
        height3 = self.random_view.height
        width3 = self.random_view.width
        mines3 = len(self.random_view.grid.give_mines_locations())
        results = (width1, height1, mines1, width2, height2, mines2, width3,
                   height3, mines3)
        self.assertEqual(results, (9, 9, 10, 16, 16, 40, 30, 16, 99))
Пример #19
0
    def __init__(self):
        pygame.init()

        self.settings = Settings()
        self.gamestatus = GameStatus()
        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))
        self.screen_rect = self.screen.get_rect()
        pygame.display.set_caption("WBPong")

        self.main_menu = Menu(self, "Play", "Exit")
        self.pause_menu = Menu(self, "Resume", "New game", "Exit")
        self.pause_button = Button(self, 24, 50, 25, "Pause")
        self.left_paddle = Paddle(self, 1)
        self.right_paddle = Paddle(self, 2)
        self.ball = Ball(self)
        self.scores = Score(self)
Пример #20
0
def run_game():
    #初始化游戏并创建一个屏幕对象
    pygame.init()
    pygame.mixer.init()
    screen = pygame.display.set_mode((1000, 600))
    pygame.display.set_caption("Plants VS Zombie")
    ai_setting = Setting()

    #声音的设置
    soundwav = pygame.mixer.Sound("boom.wav")
    pygame.mixer.music.load("first.wav")
    pygame.mixer.music.play(-1)

    #创建play按钮
    play_button = Button(ai_setting, screen, "Play", 400)
    exit_button = Button(ai_setting, screen, "Exit", 500)

    #创建一个射手,一个豌豆编组,一个僵尸编组和一个僵尸Boss编组
    peashooter = Peashooter(ai_setting, screen)
    peas = Group()
    zombies = Group()
    bossGroup = Group()

    #创建一个用于存储游戏统计信息的实例,并创建记分牌
    status = GameStatus(ai_setting)
    scoreboard = Scoreboard(ai_setting, screen, status)

    #开始游戏的主循环
    while True:

        gf.check_events(ai_setting, screen, status, scoreboard, play_button,
                        exit_button, peashooter, zombies, peas)

        if status.game_active:
            peashooter.update()
            gf.update_peas(ai_setting, screen, status, scoreboard, soundwav,
                           peashooter, zombies, bossGroup, peas)
            gf.update_zombies(ai_setting, status, screen, scoreboard,
                              peashooter, zombies, bossGroup, peas)
            gf.update_bossGroup(ai_setting, status, screen, scoreboard,
                                peashooter, zombies, bossGroup, peas)

        gf.update_screen(ai_setting, screen, status, scoreboard, peashooter,
                         zombies, bossGroup, peas, play_button, exit_button)
Пример #21
0
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")

    play_button = Button(ai_settings, screen, "Play")

    # 创建一艘飞船
    ship = Ship(ai_settings, screen)

    # 创建一个用于存储子弹的编组
    bullets = Group()
    aliens = Group()

    # 创建外星人群
    gf.create_fleet(ai_settings, screen, ship, aliens)

    # 创建一个用于存储游戏统计信息的实例
    status = GameStatus(ai_settings)

    sb = Scoreboard(ai_settings, screen, status)

    pygame.mixer.music.load("sounds/background.wav")
    pygame.mixer.music.play(-1, 0.0)

    #开始游戏的主循环
    while True:
        # 监视键盘和鼠标事件
        gf.check_events(ai_settings, screen, status, play_button, ship, aliens,
                        bullets, sb)
        if status.game_active:
            ship.update()
            # 删除已消失的子弹
            gf.update_bullets(ai_settings, screen, ship, aliens, bullets,
                              status, sb)
            gf.update_aliens(ai_settings, status, screen, ship, aliens,
                             bullets, sb)
            #gf.dectet_fire(bullets, aliens)
        gf.update_screen(ai_settings, screen, status, ship, aliens, bullets,
                         play_button, sb)
Пример #22
0
    def __init__(self):
        '''初始化游戏并创建游戏资源'''
        pygame.init()
        self.settings = Settings()

        self.screen = pygame.display.set_mode(
            (self.settings.screen_width, self.settings.screen_height))
        pygame.display.set_caption('外星人入侵')
        # 设置游戏背景颜色
        self.bg_color = self.settings.bg_color

        # 实例化飞船,并将主程序作为对象传入
        self.ship = Ship(self)
        # 实例化子弹编组
        self.bullets = pygame.sprite.Group()
        # 实例化外星人编组
        self.aliens = pygame.sprite.Group()
        self._create_fleet()

        self.status = GameStatus(self)
        self.gameover = Gameover(self)
Пример #23
0
def main():
    #----------
    #init初始化所有模块,并检查
    pygame.init()
    #----------
    #从配置文件中拿参数
    bj_settings = Settings()
    #----------
    #设置屏幕大小,flags:扩展选项
    screen = pygame.display.set_mode(
        (bj_settings.screen_width, bj_settings.screen_height),
        pygame.RESIZABLE, 32)
    #设置游戏主题
    pygame.display.set_caption('Alien Invasion')
    #设置窗口图标
    icon = pygame.image.load('image/ship.bmp')
    pygame.display.set_icon(icon)
    status = GameStatus(bj_settings)
    sc = Scoreboard(bj_settings, screen, status)
    #-----------
    #创建一个船的对象,调用船的位置方法
    ship = Ship(bj_settings, screen)
    # alien = Alien(screen)
    #-----------
    bullets = Group()
    aliens = Group()
    game_functions.create_aliens(screen, bj_settings, aliens, ship)
    play_button = Button(bj_settings, screen, 'PLAY')
    while True:
        game_functions.check_events(screen, bj_settings, ship, bullets, status,
                                    play_button, aliens, sc)
        game_functions.update_screen(status, screen, bj_settings, ship, aliens,
                                     bullets, play_button, sc)
        if status.game_active:
            ship.continue_update()
            # bullets.update()
            # game_functions.update_bullets(bullets)
            game_functions.update_screen(status, screen, bj_settings, ship,
                                         aliens, bullets, play_button, sc)
Пример #24
0
 def test_if_the_flag_in_a_wrong_places_gives_right_answer(self):
     self.random_view.push_left_button(0, 0)
     mine_locations = self.random_view.grid.give_mines_locations()
     coord_y = None
     coord_x = None
     not_found = True
     while not_found:
         for i in range(self.random_view.height):
             for j in range(self.random_view.width):
                 if not_found and (i, j) not in mine_locations:
                     if self.random_view.coordinates(i, j) == " ":
                         self.random_view.push_right_button(i, j)
                         coord_y = i
                         coord_x = j
                         not_found = False
         if not_found:
             self.game_status = GameStatus()
             self.random_view = ViewGrid(self.difficulty, self.game_status)
     self.random_view.push_left_button(mine_locations[0][0],
                                       mine_locations[0][1])
     result = self.random_view.coordinates(coord_y, coord_x)
     self.assertEqual(result, "w")
Пример #25
0
def run_game():
    # 初始化pygame、设置和屏幕对象
    pygame.init()
    ai_settings = Settings()

    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption(ai_settings.caption)
    play_button = Button(screen, 'PLAY')

    status = GameStatus(ai_settings)
    scoreboard = Scroeboard(screen, ai_settings, status)
    ship = Ship(screen, ai_settings)
    bullets = Group()
    aliens = Group()

    # 创建外星人集群
    gf.create_fleet(screen, ai_settings, aliens, ship)

    # 开始游戏主循环
    while True:

        # 监视键盘和鼠标事件
        gf.check_events(ship, bullets, screen, ai_settings, status,
                        play_button, aliens, scoreboard)

        if status.game_active is True:
            # 更新飞船
            ship.update()
            # 更新子弹
            gf.update_bullets(bullets, aliens, screen, ai_settings, ship,
                              status, scoreboard)
            # 更新外星人
            gf.update_aliens(aliens, ai_settings, ship, status, bullets,
                             screen, scoreboard)
        # 更新屏幕
        gf.update_screen(ai_settings, screen, ship, bullets, aliens,
                         play_button, status, scoreboard)
Пример #26
0
def run_game():
    pygame.init()
    screen = pygame.display.set_mode(
        (settings.screen_width, settings.screen_height))
    pygame.display.set_caption('外星飞船大战')
    pygame.mouse.set_visible(True)

    play_button = Button(screen, 'Play')

    my_ship = Ship(screen)

    status = GameStatus()
    sb = ScoreBoard(screen, status)

    aliens = Group()
    gf.create_fleet(screen, my_ship, aliens)

    while 1:
        gf.deal_events(my_ship, screen, aliens, status, play_button)
        if status.game_active:
            gf.update_bullets(screen, my_ship, aliens, status, sb)
            my_ship.update()
            gf.update_aliens(screen, my_ship, aliens, status)
        gf.update_screen(screen, my_ship, aliens, status, sb, play_button)
Пример #27
0
from pygame.sprite import Group
from pygame.locals import *
from enemy import BigEnemy

# initialization of pygame
pygame.init()
# initialization of audios
pygame.mixer.init()
# build an instance of class Settings()
settings = Settings()
# acquire an screen object
screen = pygame.display.set_mode(
    (settings.screen_width, settings.screen_height), 0, 32)

# build an instance of class GameStatus()
gameStatus = GameStatus()
# build an instance of class GameMap()
gameMap1 = GameMap(0, 0, settings, screen)
gameMap2 = GameMap(0, -settings.screen_height, settings, screen)
# buip an ship
ship = Ship(settings, screen)
# build a scoreboard
scoreBoard = ScoreBoard(settings, screen, gameStatus)
# build an bullet
bullets = Group()
bulletAmmos = Group()
bombAmmos = Group()
small_enemies = Group()
middle_enemies = Group()
#big_enemies = Group()
boss = Group()
Пример #28
0
 def __init__(self, settings: dict):
   self.game_status = GameStatus(settings)
Пример #29
0
    pressed_keys.add(key)


def key_release(key, modificators):
    '''Processes key release'''
    pressed_keys.discard(key)


# batch for graphics
batch = pyglet.graphics.Batch()
batch_status = pyglet.graphics.Batch()
batch_bkg = pyglet.graphics.Batch()
batch_effects = pyglet.graphics.Batch()

# game state
game_status = GameStatus(batch_status, SHIP_IMAGE_INDEX, WINDOW_WIDTH,
                         WINDOW_HEIGHT)
game_status.draw_lifes()
#game_status.draw()

# space
space = Space(WINDOW_WIDTH, WINDOW_HEIGHT, batch, batch_effects, game_status,
              SHIP_IMAGE_INDEX)
space.create_objects()

# window
window = pyglet.window.Window(space.width, space.height, caption='ASTEROIDS')
window.push_handlers(on_draw=draw,
                     on_key_press=key_press,
                     on_key_release=key_release)
background = pyglet.image.load(choice(BACKGROUNDS))
sprite = pyglet.sprite.Sprite(background, batch=batch_bkg)
Пример #30
0
class AlienInvasion:
    def __init__(self):
        pygame.init()
        self.my_setting = Settings()

        self.screen = pygame.display.set_mode(
            (self.my_setting.screen_width, self.my_setting.screen_height))
        pygame.display.set_caption('Alien Invasion')
        self.color = self.my_setting.bg_color
        '''放在初始化完成下面'''
        self.ship = Ship(self)
        '''子弹'''
        self.bullets = pygame.sprite.Group()
        self.is_bulleting = False
        '''外星人'''
        self.aliens = pygame.sprite.Group()
        self._build_aliens()
        '''游戏状态'''
        self.status = GameStatus(self)
        '''play按钮'''
        self.play_button = Button(self, 'Play')
        '''分数按钮'''
        self.sb = ScoreBoard(self)

    def run_game(self):
        self._auto_fire()
        while True:
            self._check_event()
            if self.status.game_active:
                self.ship.update()
                self._update_bullets()
                self._update_aliens()
            self._update_screen()

    '''--------------------------'''

    def _build_aliens(self):
        alien_sample = Alien(self)

        alien_width = alien_sample.rect.width
        alien_height = alien_sample.rect.height
        '''可用宽度'''
        available_space_x = self.screen.get_rect().width - 2 * alien_width
        available_number_x = available_space_x // (2 * alien_width)
        '''可用高度'''
        available_space_y = self.screen.get_rect().height - 3 * alien_width
        available_number_y = available_space_y // (2 * alien_height)

        for num_y in range(available_number_y):
            for num_x in range(available_number_x):
                alien = self._create_alien(num_x, num_y)
                self.aliens.add(alien)

    def _create_alien(self, num_x, num_y):
        alien = Alien(self)
        alien.x = alien.rect.width + num_x * (2 * alien.rect.width)
        alien.rect.x = alien.x

        alien.y = alien.rect.height + num_y * (2 * alien.rect.width)
        alien.rect.y = alien.y
        return alien

    def _update_bullets(self):
        self.bullets.update()
        for bullet in self.bullets.copy():
            if bullet.rect.bottom <= 0:
                self.bullets.remove(bullet)

        self._check_bullet_alien_collide()

    def _check_bullet_alien_collide(self):
        collisions = pygame.sprite.groupcollide(self.bullets, self.aliens,
                                                True, True)
        '''增加得分'''
        if collisions:
            for aliens in collisions.values():
                for alien in aliens:
                    self.status.score += self.my_setting.per_alien_score
            self.sb.prep_score()
            self.sb.check_high_score()

        if not self.aliens:
            self.bullets.empty()
            self.my_setting._increase_speed()
            self.status.level += 1
            self.sb.prep_level()
            self._build_aliens()

    def _update_aliens(self):
        self._check_alien_edge()
        self.aliens.update()

        if pygame.sprite.spritecollideany(self.ship, self.aliens):
            self._ship_hit()

        self._check_alien_bottom()

    def _ship_hit(self):
        self._reset_scene_status()
        self.status.minus_ship()
        self.sb.prep_ships()
        sleep(1)

    def _check_alien_bottom(self):
        screen_rect = self.screen.get_rect()
        for alien in self.aliens.sprites():
            if alien.rect.bottom >= screen_rect.bottom:
                self._ship_hit()
                break

    def _check_alien_edge(self):
        for alien in self.aliens.sprites():
            if alien.check_edge():
                self._change_alien_direction(alien)
                break

    def _change_alien_direction(self, alien):
        self.my_setting.alien_direction = self.my_setting.alien_direction * (
            -1)
        for alien in self.aliens.sprites():
            alien.y += self.my_setting.alien_spped_y
            alien.rect.y = alien.y

    def _check_event(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.status.save_high_score()
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                self._check_key_down(event)
            elif event.type == pygame.KEYUP:
                self._check_key_up(event)
            elif event.type == pygame.MOUSEBUTTONDOWN:
                mouse_pos = pygame.mouse.get_pos()
                self._check_mouse_down(mouse_pos)

    def _check_key_down(self, event):
        if event.key == pygame.K_RIGHT:
            self.ship.right_moving = True
        elif event.key == pygame.K_LEFT:
            self.ship.left_moving = True
        elif event.key == pygame.K_q:
            self.status.save_high_score()
            sys.exit()
        elif event.key == pygame.K_SPACE:
            # self._fire_bullet()
            self.fire_job.resume()
        elif event.key == pygame.K_p:
            self._start_game()

    def _check_key_up(self, event):
        if event.key == pygame.K_RIGHT:
            self.ship.right_moving = False
        elif event.key == pygame.K_LEFT:
            self.ship.left_moving = False
        elif event.key == pygame.K_SPACE:
            # self._fire_bullet()
            self.fire_job.pause()

    def _check_mouse_down(self, pos):
        if self.play_button.rect.collidepoint(pos):
            self._start_game()

    def _start_game(self):
        if not self.status.game_active:
            self.status.reset()
            self.sb.prep_score()
            self.sb.prep_high_score()
            self.sb.prep_level()
            self.sb.prep_ships()
            self.status.game_active = True
            self._reset_scene_status()
            self.my_setting._init_dynamic_setting()
            pygame.mouse.set_visible(False)

    def _reset_scene_status(self):
        self.aliens.empty()
        self.bullets.empty()
        self._build_aliens()
        self.ship.center_place()

    def _auto_fire(self):
        scheduler = BackgroundScheduler()
        self.fire_job = scheduler.add_job(self._fire_bullet,
                                          'interval',
                                          seconds=0.1)
        scheduler.start()
        self.fire_job.pause()

    def _update_screen(self):
        self.screen.fill(self.color)

        self.ship.blitme()
        '''绘制子弹'''
        for bullet in self.bullets.sprites():
            bullet.draw_bullet()

        self.aliens.draw(self.screen)
        if not self.status.game_active:
            self.play_button.draw_button()

        self.sb.draw_score()
        pygame.display.flip()

    def _fire_bullet(self):
        if self.status.game_active:
            new_bullet = Bullet(self)
            self.bullets.add(new_bullet)