Ejemplo n.º 1
0
    def run_game(self):                                                 # 3
        """Replaces the original run_game(), so we can interject our own
        controls.
        """

        # Start out in an active state.
        self.ai_game.stats.game_active = True                           # 4
        pygame.mouse.set_visible(False)

        # Speed up the game for development work.
        self.modify_speed(5)

        # Get the full fleet size.
        self.fleet_size = len(self.ai_game.aliens)

        # Start the main loop for the game.
        while True:                                                     # 5
            # Still call ai_game._check_events(), so we can use keyboard to
            #   quit.
            gf.check_events(ai_game.ai_settings, ai_game.screen, ai_game.stats, ai_game.sb, ai_game.play_button, ai_game.ship,
                            ai_game.aliens, ai_game.bullets)  
            self.implement_strategy()

            if self.ai_game.stats.game_active:
                self.ai_game.ship.update()
                gf.update_bullets(ai_game.ai_settings, ai_game.screen, ai_game.stats, ai_game.sb, ai_game.ship, ai_game.aliens, ai_game.bullets)
                gf.update_aliens(ai_game.ai_settings, ai_game.screen, ai_game.stats, ai_game.sb, ai_game.ship, ai_game.aliens, ai_game.bullets)               
                gf.fire_bullet(ai_game.ai_settings, ai_game.screen, ai_game.ship, ai_game.bullets)
            

            gf.update_screen(ai_game.ai_settings, ai_game.screen, ai_game.stats, ai_game.sb, ai_game.ship, ai_game.aliens, ai_game.bullets,ai_game.play_button)
Ejemplo n.º 2
0
    def implement_strategy(self):
        """Implement an automated strategy for playing the game."""

        # Sweep right and left until half the fleet is destroyed, then stop.
        if len(self.ai_game.aliens) >= 0.5 * self.fleet_size:
            self.sweep_right_left() 

        else:
            self.ai_game.ship.moving_right = False
            self.ai_game.ship.moving_left = False     

        # Get specific alien to chase.
        if self.ai_game.aliens.sprites():
            target_alien = self.get_target_alien()                         # 1

            # Move toward target alien.
            ship = self.ai_game.ship
            if ship.rect.x < target_alien.rect.x:                           # 2
                ship.moving_right = True
                ship.moving_left = False
            elif ship.rect.x > target_alien.rect.x:
                ship.moving_right = False
                ship.moving_left = True

        # Fire a bullet at the given frequency, whenever possible.
        firing_frequency = 1.0                                          # 2
        if random() < firing_frequency:
            gf.fire_bullet(ai_game.ai_settings, ai_game.screen, ai_game.ship, ai_game.bullets)
Ejemplo n.º 3
0
def run_game():
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    ship = Ship(ai_settings, screen)
    bullets = Group()
    ebullets = Group()
    aliens = Group()
    pygame.display.set_caption("打人啦")
    #game loop
    gf.init_alien(ai_settings, screen, aliens)
    while True:
        gf.ai_move(ship, aliens, ebullets, screen, ai_settings)
        gf.check_events(ship)
        ship.update()
        if ship.fire:
            gf.fire_bullet(ai_settings, screen, ship, bullets)
            ship.fire = False
        bullets.update()
        ebullets.update()
        gf.update_aliens(aliens)
        gf.update_bullets(bullets)
        gf.update_ebullets(ebullets, ai_settings)
        gf.check_kill(screen, bullets, aliens, ai_settings, ebullets)
        gf.check_bekill(ebullets, ship, ai_settings)
        gf.update_screen(ai_settings, screen, ship, bullets, aliens, ebullets)
def check_keydown_events(event, ai_settings, screen, ship, bullets):
    """Respond to keystroke"""
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
    elif event.key == pygame.K_SPACE:
        gf.fire_bullet(ai_settings, screen, ship, bullets)
Ejemplo n.º 5
0
def run_game():
    # initialize game and create a screen object.

    # initialize game
    pygame.init()

    # create game display with 1200 pixels wide and 800 pixels in height
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")

    # create an instance to store game stats
    filename = 'high_score.txt'
    stats = GameStats(ai_settings, filename)

    ship = Ship(screen, ai_settings)
    bullets = Group()
    aliens = Group()
    rewards = Group()
    missiles = Group()
    shields = Group()

    # create a play button
    msg1 = 'Press "P" to Play'
    msg2 = 'Press "Q" to Quit'
    play_button = Button(screen, ai_settings, msg1, msg2)

    score_board = ScoreBoard(screen, ai_settings, stats)

    # create an alient fleet
    gf.create_alien_fleet(screen, ai_settings, aliens, ship, stats)

    # The main loop of the game
    while True:
        gf.check_events(ai_settings, screen, ship, bullets, play_button, stats,
                        aliens, score_board, filename, rewards, missiles)
        if stats.game_active:
            ship.update()
            gf.fire_bullet(ai_settings, screen, ship, bullets)
            gf.update_bullets(screen, ai_settings, aliens, ship, bullets,
                              stats, score_board, rewards, missiles)
            gf.update_aliens(stats, aliens, bullets, ship, screen, ai_settings,
                             score_board, rewards, missiles, shields)
            gf.update_rewards(ship, rewards, ai_settings, stats, score_board,
                              shields, screen)
            gf.update_missiles(stats, aliens, bullets, ship, screen,
                               ai_settings, score_board, rewards, missiles,
                               shields)
            gf.update_shields(shields, missiles, ai_settings, aliens)
        gf.update_screen(ai_settings, screen, ship, bullets, aliens,
                         play_button, stats, score_board, rewards, missiles,
                         shields)
Ejemplo n.º 6
0
def run_game():
	# initialize game and create a screen object.
	
	# initialize game
	pygame.init()

	# create game display
	ai_settings = Settings()
	screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
	pygame.display.set_caption("Flying Piggy")

	# create an instance to store game stats
	filename = 'high_round.txt'

	stats = GameStats(ai_settings, filename)

	piggy = Piggy(screen, ai_settings)
	bullets = Group()
	
	rocks = Group()
	rock_stats = RockStats()
	
	rewards = Group()
	shields = Group()

	

	score_board = ScoreBoard(screen, ai_settings, stats)
	
	gf.create_initial_rocks(screen, ai_settings, rock_stats, rocks)
	
	# The main loop of the game
	while True:
		gf.check_events(stats, piggy, rocks, bullets, screen, ai_settings, rock_stats, shields, rewards, score_board, filename)
		if stats.game_active:
			piggy.update()
			gf.fire_bullet(ai_settings, screen, piggy, bullets)
			gf.update_bullets(screen, ai_settings, rocks, bullets, rewards, stats, score_board)
			gf.update_rocks(screen, ai_settings, rock_stats, rocks, piggy, stats, score_board)
			gf.update_rewards(shields, screen, ai_settings, piggy, rewards, score_board)
			gf.update_shields(shields, ai_settings, rocks)
			gf.check_round(stats, score_board, ai_settings)
		
		# create a play button
		if stats.piggy_hit:
			msg1 = "Game Over"
		else:
			msg1 = 'Round ' + str(stats.round)
		msg2 = 'Press "P" to Play'
		play_button = Button(screen, ai_settings, msg1, msg2)

		gf.update_screen(ai_settings, screen, piggy, bullets, stats, play_button, rocks, rewards, shields, score_board)
Ejemplo n.º 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("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)
    # 创建背景
    background = Background(ai_settings, screen)
    background2 = Background2(ai_settings, screen)

    # 开始游戏的主循环
    should_shoot_time = datetime.datetime.now()
    true_now_time = datetime.datetime.now()
    one_second = datetime.timedelta(0, 0, 100000)
    while True:
        gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
                        aliens, bullets)

        gf.update_background(background, screen)
        gf.update_background2(background2, screen)

        if stats.game_active:
            ship.update()
            if true_now_time > should_shoot_time:
                gf.fire_bullet(ai_settings, screen, ship, bullets)
                should_shoot_time = datetime.datetime.now() + one_second
            true_now_time = datetime.datetime.now()

            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, background, background2)
Ejemplo n.º 8
0
def check_keydown_events(event, ai_settings, stats, screen, ship, bullets):
    if event.key == pygame.K_RIGHT:
        ship.moving_right = True
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
    elif event.key == pygame.K_UP:
        ship.moving_up = True
    elif event.key == pygame.K_DOWN:
        ship.moving_down = True
    elif event.key == pygame.K_SPACE:
        gf.fire_bullet(ai_settings, screen, ship, bullets)
    elif event.key == pygame.K_q:
        gf.save_and_exit(stats)
    elif event.key == pygame.K_n:
        stats.reset_stats()
Ejemplo n.º 9
0
def run_game():
    # 初始化游戏并创建一个屏幕对象
    pygame.init()
    ai_settings = Settings()
    # 创建一个1200 X 800 像素的窗口
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")  # 设置窗口的标题

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

    # 创建得分牌
    sb = Scoreboard(ai_settings, screen, stats)

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

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

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

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

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

    # 开始游戏的主循环
    while True:
        gf.check_events(ai_settings, stats, screen, ship, aliens, bullets,
                        play_button, sb)  # 事件检查(检查玩家输入)
        if stats.game_active:
            ship.update()  # 飞船位置更新
            gf.fire_bullet(ai_settings, bullets, screen, ship)  # 发射子弹
            gf.update_bullets(ai_settings, screen, ship, bullets, aliens, sb,
                              stats)  # 子弹位置更新
            gf.update_aliens(ai_settings, ship, aliens, stats, screen, bullets,
                             sb)  # 外星人位置更新
        gf.update_screen(ai_settings, stats, screen, ship, bullets, aliens,
                         play_button, sb)  # 游戏窗口更新
Ejemplo n.º 10
0
def run_game():
    # Initialize game and create a 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")

    # Make the Play button.
    play_button = Button(ai_settings, screen, "Play")

    # Create an instance to store game statistics.
    stats = GameStats(ai_settings)

    # Make a ship
    ship = Ship(ai_settings, screen)

    # Make a group to store bullets in.
    bullets = Group()

    # Make a group of aliens.
    aliens = Group()

    # Create the fleet of aliens.
    gf.create_fleet(ai_settings, screen, ship, aliens)
    intv = time.time()
    # Start the main loop for the game
    while True:
        # Watch for the keyboard and mouse events
        gf.check_events(ai_settings, screen, stats, play_button, ship, bullets)
        if time.time() - intv >= 1:
            enemy = random.choice(aliens.sprites())
            gf.fire_bullet(ai_settings, screen, enemy, bullets, True)
            intv = time.time()
        if stats.game_active:
            ship.update()
            gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
            gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)

        gf.update_screen(ai_settings, screen, stats, ship, aliens, bullets,
                         play_button)
Ejemplo n.º 11
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)
    #  创建一个外星人
    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)
        gf.fire_bullet(ai_settings, screen, ship, bullets)
        gf.update_bullets(bullets)
        gf.update_screen(ai_settings, screen, ship, aliens, bullets)
Ejemplo n.º 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')

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

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

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

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

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

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

    #开始游戏主循环
    while True:
        #监听鼠标和键盘事件
        gf.check_events(ai_settings,screen,ship,bullets,stats,play_button,aliens)

        if stats.game_active:
            # 控制飞船移动
            gf.fire_bullet(ai_settings,screen,ship,bullets)   #激光外挂
            ship.update()
            bullets.update()                        #当对编组调用update()时,编组将自动对其中的每个精灵都调用update()
            gf.update_bullets(ai_settings,screen,ship,aliens,bullets,stats,sb)
            gf.update_aliens(ai_settings,stats,screen,ship,aliens,bullets)

        #更新屏幕上的图像,并切换到新屏幕
        gf.update_screen(ai_settings,screen,ship,bullets,aliens,stats,play_button,sb)
Ejemplo n.º 13
0
    def update(self, a_setting, screen, ship, aliens, bullets):
        if self.moving_right:
            if self.moving_right and self.rect.right < self.screen_rect.right:
                self.center += self.a_setting.ship_speed_factor
        if self.moving_left:
            if self.moving_left and self.rect.left > 0:
                self.center -= self.a_setting.ship_speed_factor
        if self.moving_up:
            if self.moving_up and self.rect.top > 0:
                self.rect.centery -= self.a_setting.ship_speed_factor

        if self.moving_down:
            if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
                self.rect.centery += self.a_setting.ship_speed_factor
        if self.moving_bullet:

            #gf.fire_bullet(a_setting,screen,ship,bullets)
            #gf.bull(bullets)
            #gf.update_bullets(bullets)
            gf.fire_bullet(a_setting, screen, ship, bullets)
            gf.update_screen(a_setting, screen, ship, aliens, bullets)

        self.rect.centerx = self.center
Ejemplo n.º 14
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)
    # 创建一个用于存储游戏统计信息的实例
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)
    # 创建Play按钮
    play_button = Button(ai_settings, screen, "Play")

    #开始游戏的主循环
    while True:
        #监视键盘和鼠标事件
        gf.check_events(ai_settings, screen, ship, bullets, stats, play_button,
                        aliens, sb)
        if stats.game_active:
            # 更新飞船
            ship.update()
            if ai_settings.is_const_shoot:
                gf.fire_bullet(ai_settings, screen, ship, bullets)
            gf.update_bullets(ai_settings, screen, ship, aliens, bullets,
                              stats, sb)
            gf.update_aliens(ai_settings, aliens, ship, stats, screen, bullets,
                             sb)
        #绘制屏幕
        gf.update_screen(ai_settings, screen, ship, bullets, aliens, stats,
                         play_button, sb)
Ejemplo n.º 15
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('Alien Invasion')
    play_button = Button(ai_settings, screen, "F**K")

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

    ship = Ship(ai_settings, screen)
    # stars=Star(ai_settings,screen)

    # 创建一个用于存储子弹的编组
    bullets = Group()
    stars = Group()
    aliens = Group()
    # 创建外星人群
    gf.create_fleet(ai_settings, stats, screen, ship, aliens)
    sb = Scoreboard(ai_settings, screen, stats)

    while True:
        gf.check_event(ai_settings, screen, stats, sb, play_button, ship,
                       stars, aliens, bullets)
        if stats.game_active:
            ship.update()
            if ship.fire_bullets:
                gf.fire_bullet(ai_settings, screen, ship, bullets)
            gf.check_level(ai_settings, stats, screen, sb, ship, stars)
            gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
                              bullets)
            gf.update_aliens(ai_settings, stats, screen, sb, ship, stars,
                             aliens, bullets)
        gf.update_screen(ai_settings, screen, stats, sb, ship, stars, aliens,
                         bullets, play_button)
Ejemplo n.º 16
0
def check_events(ai_settings, stats, sb, screen, ship, bullets, play_button):
    """Отслеживание событий клавиатуры и мыши"""

    if stats.game_active and stats.is_mouse_control:
        mouse_x, mouse_y = pygame.mouse.get_pos()
        move_ship_by_mouse(ai_settings, ship, mouse_x, mouse_y)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gf.save_and_exit(stats)
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, ai_settings, stats, screen, ship,
                                 bullets)
        elif event.type == pygame.KEYUP:
            check_keyup_events(event, ship)
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if not stats.game_active:
                mouse_x, mouse_y = pygame.mouse.get_pos()
                check_play_button(ai_settings, screen, stats, sb, play_button,
                                  mouse_x, mouse_y)
            else:
                gf.fire_bullet(ai_settings, screen, ship, bullets)
                stats.is_mouse_control = True
                pygame.mouse.set_visible(False)
Ejemplo n.º 17
0
def run_game(marker_img):
    # Initialize pygame, settings, and screen object.
    global onTracking
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("基于SIFT和KCF的运动目标匹配与跟踪:人机交互游戏《外星人入侵》")

    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

    # hog, fixed_window, multiscale
    tracker = my_kcf.KCF(True, True, True)

    target = cv2.imdecode(np.fromfile(marker_img, dtype=np.uint8),
                          cv2.IMREAD_GRAYSCALE)
    first_ret, first_frame = cap.read()
    init_rect = find_target(target, first_frame)
    ix = init_rect[0][0]
    iy = init_rect[0][1]
    w = init_rect[3][0] - init_rect[0][0]
    h = init_rect[1][1] - init_rect[0][1]

    initTracking = True

    # Make the Play button.
    play_button = Button(ai_settings, screen, "Play")

    # Create an instance to store game statistics, and a scoreboard.
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)

    # Make a ship, a group of bullets, and a group of aliens.
    ship = Ship(ai_settings, screen)
    bullets = Group()
    aliens = Group()

    # Create the fleet of aliens.
    gf.create_fleet(ai_settings, screen, ship, aliens)

    ship_x = int(ai_settings.screen_width / 2)

    # Start the main loop for the game.
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        if initTracking:  # 在鼠标事件里定义的全局变量,为true代表新选好了框
            cv2.rectangle(frame, (ix, iy), (ix + w, iy + h), (0, 255, 255), 2)
            tracker.init([ix, iy, w, h], frame)

            initTracking = False
            onTracking = True
        elif onTracking:  # 为true代表没有新选框,在跟踪原来的
            boundingbox = tracker.update(frame)
            boundingbox = list(map(int, boundingbox))
            # boundingbox变成了一个列表,内容为x,y,w,h
            print(boundingbox)
            cv2.rectangle(frame, (boundingbox[0], boundingbox[1]),
                          (boundingbox[0] + boundingbox[2],
                           boundingbox[1] + boundingbox[3]), (0, 255, 255), 1)

            ship_x = int(boundingbox[0] + boundingbox[2] / 2)

        cv2.imshow(
            'Webcam',
            cv2.resize(frame, (480, 300), interpolation=cv2.INTER_CUBIC))

        quit = gf.check_events(ai_settings, screen, stats, sb, play_button,
                               ship, aliens, bullets)

        if quit:
            break

        if stats.game_active:
            ship.update(ship_x)
            gf.fire_bullet(ai_settings, screen, ship, bullets)
            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)

    cap.release()
    cv2.destroyAllWindows()
    pygame.quit()
Ejemplo n.º 18
0
def run_game():
    pygame.init()
    pygame.mixer.init()
    bs = pygame.mixer.Sound('data/l.ogg')
    ad = pygame.mixer.Sound('data/al.ogg')
    ded = pygame.mixer.Sound('data/ded.ogg')
    theme = pygame.mixer.Sound('data/theme.ogg')
    click = pygame.mixer.Sound('data/click.ogg')
    go = pygame.mixer.Sound('data/Game_over.ogg')
    power = pygame.mixer.Sound('data/power.ogg')
    power.set_volume(1)
    theme.set_volume(0.2)
    theme.play(-1)
    go.set_volume(1)
    bs.set_volume(0.1)
    ad.set_volume(0.1)
    ded.set_volume(0.2)
    ai_s = Settings()
    black = (0, 0, 0)
    green = (0, 200, 0)

    screen = pygame.display.set_mode((ai_s.scr_w, ai_s.scr_h))

    pygame.display.set_caption("Alien Invasion")

    play = Button(ai_s, screen, 'Play', 200, 40, 0, -50, green, black, 48)

    infos = Button(ai_s, screen, 'Info', 200, 40, 0, 50, green, black, 48)

    back = Button(ai_s, screen, '<-', 40, 40, 600, -330, green, black, 48)

    buttons = [play, infos, back]

    down = Button(ai_s, screen, '..more', 200, 40, 300, 300, green, black, 40)

    title = Button(ai_s, screen, 'ALIEN INVASION', 600, 200, 0,
                   -(ai_s.scr_h / 2) + 150, black, green, 120)

    game_o = Button(ai_s, screen, 'Game Over', 200, 40, 0, 0, black, green, 60)

    info = Info_Screen(screen)
    info2 = Info_Screen2(screen)
    stats = GameStats(ai_s)
    sb = Scoreboard(ai_s, screen, stats)
    ship = Ship(ai_s, screen)
    alien = Alien(ai_s, screen)
    bullets = Group()
    aliens = Group()
    gf.create_fleet(ai_s, screen, ship, aliens)
    po = Powers(screen)
    a_bullets = Group()

    while True:
        pygame.time.delay(15)

        if not stats.game_active:
            mf.check_events(stats, buttons, info, click, down, info2)

            mf.update_screen(ai_s, screen, buttons, info, title, down, info2)
        if stats.game_active:
            if sb.power_status:
                sb.count_down(power)

            gf.check_events(ship)
            gf.fire_bullet(ai_s, screen, ship, bullets, bs, sb)
            gf.alien_bullet(ai_s, screen, aliens, a_bullets, sb, stats)
            gf.update_a_bullets(ai_s, stats, screen, sb, ship, aliens, bullets,
                                ded, go, game_o, power, a_bullets)

            ship.update()

            gf.update_bullets(ai_s, screen, stats, sb, ship, aliens, bullets,
                              ad, po)
            gf.update_aliens(ai_s, stats, screen, sb, ship, aliens, bullets,
                             ded, go, game_o, power, a_bullets)
            if po.status == True:
                gf.update_po(po, ship, sb, power)
            gf.update_screen(ai_s, screen, stats, sb, ship, aliens, bullets,
                             po, a_bullets)
def run_game():
    pygame.init()
    pygame.mixer.init()
    bs = pygame.mixer.Sound('data/laser.wav')
    ad = pygame.mixer.Sound('data/al.ogg')
    dead = pygame.mixer.Sound('data/dead.wav')
    theme = pygame.mixer.Sound('data/background.wav')
    click = pygame.mixer.Sound('data/click.ogg')
    go = pygame.mixer.Sound('data/Game_over.ogg')
    power = pygame.mixer.Sound('data/power.wav')
    power.set_volume(0.8)
    theme.set_volume(0.1)
    theme.play(-1)
    go.set_volume(2)
    bs.set_volume(0.6)
    ad.set_volume(0.2)
    dead.set_volume(0.5)
    ai_s = Settings()
    black = (0, 0, 0)
    blue1 = (30, 230, 230)
    blue2 = (47, 150, 150)

    screen = pygame.display.set_mode((ai_s.scr_w, ai_s.scr_h))
    background = pygame.image.load('data/background.png')

    pygame.display.set_caption("Alien Invasion")
    icon = pygame.image.load('data/spaceship.png')
    pygame.display.set_icon(icon)

    #Button(ai_s,screen,msg,width,height,x,y,rect_color,text_color,font_size)

    play = Button(ai_s, screen, 'Play', 200, 40, 0, -50, blue1, black, 48)

    infos = Button(ai_s, screen, 'Info', 200, 40, 0, 50, blue1, black, 48)

    back = Button(ai_s, screen, '<', 40, 40, 600, -330, blue1, black, 48)

    buttons = [play, infos, back]

    down = Button(ai_s, screen, 'Bonus', 200, 40, 300, 300, blue1, black, 40)

    title = Button(ai_s, screen, 'ALIEN INVASION', 0, 0, 0,
                   -(ai_s.scr_h / 2) + 150, 0, blue1, 120)

    game_o = Button(ai_s, screen, 'Game Over', 0, 0, 0, 0, 0, blue1, 120)

    info = Info_Screen(screen)
    info2 = Info_Screen2(screen)
    stats = GameStats(ai_s)
    sb = Scoreboard(ai_s, screen, stats)
    ship = Ship(ai_s, screen)
    alien = Alien(ai_s, screen)
    bullets = Group()
    aliens = Group()
    gf.create_fleet(ai_s, screen, ship, aliens)
    po = Powers(screen)
    a_bullets = Group()

    while True:
        pygame.time.delay(15)
        screen.blit(background, (0, 0))
        if not stats.game_active:
            mf.check_events(stats, buttons, info, click, down, info2)

            mf.update_screen(ai_s, screen, buttons, info, title, down, info2)
        if stats.game_active:
            if sb.power_status:
                sb.count_down(power)

            gf.check_events(ship)
            gf.fire_bullet(ai_s, screen, ship, bullets, bs, sb)
            gf.alien_bullet(ai_s, screen, aliens, a_bullets, sb, stats)
            gf.update_a_bullets(ai_s, stats, screen, sb, ship, aliens, bullets,
                                dead, go, game_o, power, a_bullets)

            ship.update()

            gf.update_bullets(ai_s, screen, stats, sb, ship, aliens, bullets,
                              ad, po)
            gf.update_aliens(ai_s, stats, screen, sb, ship, aliens, bullets,
                             dead, go, game_o, power, a_bullets)
            if po.status == True:
                gf.update_po(po, ship, sb, power)
            gf.update_screen(ai_s, screen, stats, sb, ship, aliens, bullets,
                             po, a_bullets)
Ejemplo n.º 20
0
def run_game():
    ''' Функция сoздает игрoвые oбъекты, настраивает их и запускает игрoвoй цикл. '''
    # Инициализирует игру.
    pygame.init()
    # Инициализируем oбъект класса Settings, хранящий настрoйки игры.
    ai_settings = settings.Settings()
    # Инициализирует пoверхнoсть для oтрисoвки кадрoв.
    icon = pygame.image.load('images/icon.png')
    pygame.display.set_icon(icon)
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    ''' Сoздаем игрoвые oбъекты. '''
    # Cоздаем экземпляр игровой статистики.
    stats = GameStats(ai_settings)
    # Cоздаем корабль.
    ship = Ship(ai_settings, screen)
    # Сoздаем группу для хранения всех пуль.
    bullets = Group()
    # Группа для хранения пришельцев.
    aliens = Group()
    # Cоздание флота пришельцев.
    gf.create_fleet(ai_settings, screen, ship, aliens)
    # Создание корабля.
    # Группа для хранения фонoвых oбъектoв.
    backgrounds = Group()
    # Сoздаем начальный фoн, кoтoрый затем запустит самooрганизацию фoна.
    start_bg1 = Background(ai_settings, screen, -ai_settings.bg_speed)
    # Дoбавляем егo в группу фoнoв.
    backgrounds.add(start_bg1)
    # Загружаем изoбражения для анимирoваннoгo спрайта.
    images = []
    for i in range(0, 4):
        text = 'images/fire/{0}.png'.format(i)
        images.append(pygame.image.load(text))
    # Загружаем изoбражения для взрыва.
    images_explosion = []
    for i in range(0, 13):
        text = 'images/explosion/{0}.png'.format(i)
        images_explosion.append(pygame.image.load(text))
    # Группа для хранения VFX.
    vfxs = Group()
    # Группа для взрывoв.
    exps = Group()
    # Сoздаем VFX-oбъекты и дoбавляем их в группу.
    for x in ship.fire_x:
        new_vfx = FireFX(screen, images, 4, x, (ship.rect.top + 1))
        vfxs.add(new_vfx)
    # Создаю часы для фиксации FPS.
    clock = pygame.time.Clock()
    # Сoздание кнoпки 'Play'.
    play_button = Button(ai_settings, screen, 'Play')
    ''' Запуск oснoвнoгo цикла игры. '''
    while True:
        # Фиксирую FPS игры.
        clock.tick(120)
        # Прoверка действий игрoка и реакция на них.
        gf.check_events(ai_settings, stats, screen, play_button, ship, aliens,
                        bullets, exps)
        ''' Части игры, которые выполняются лишь при game_active = True. '''
        if stats.game_active == True:

            # Расчеты для прoрисoвки нoвoгo кадра.
            gf.update_bg(backgrounds, ai_settings, screen)
            ship.update()
            # пули рисуются на фoне, нo пoд кoраблем
            gf.fire_cooldown(ship)
            gf.fire_bullet(ai_settings, screen, ship, bullets, vfxs)
            gf.update_bullets(ai_settings, screen, ship, aliens, bullets)
            gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)
            gf.check_bullet_alien_collisions(ai_settings, ship, bullets,
                                             aliens, screen, images_explosion,
                                             4, exps)
            # Расчеты для эффектoв oгня.
            gf.update_count_frames(vfxs)
            gf.update_indeces(vfxs)
            gf.update_frames(vfxs, ship)
            # Расчеты для взрывoв.
            gf.update_lifetimes(exps)
            gf.delete_exps(exps)
            gf.update_count_frames(exps)
            gf.update_indeces(exps)
            gf.update_frames_exps(exps)
        ''' Прорисовка нового кадра. '''
        gf.update_screen(ai_settings, stats, screen, ship, aliens, bullets,
                         backgrounds, vfxs, exps, play_button)
Ejemplo n.º 21
0
def run_game():
	# initialize game and create a screen object.
	pygame.init()
	# make an instance of the class Settings 
	ai_settings= Settings()
	screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
	pygame.display.set_caption("corona virus pandemic")
	# lets create an instance to stor game statistics and create a scoreboard
	stats = Gamestats(ai_settings)
	sb = Scoreboard(ai_settings, screen, stats)
	# make a ship
	ship = Ship(ai_settings, screen)
	# make a group to store the bullets in 
	# bullets an instance of the class Group. created outside the loop to avoid repetition
	bullets = Group()
	# make a group of ufos 
	startreks = Group()

	# create the fleet of startreks
	gf.create_fleet(ai_settings, screen, ship, startreks)
	# make an instance of a ufo
	startrek= Ufo(ai_settings, screen)
	# start the mainloop for the game.
	#  lets create an instance of gameover 
	gameover = Gameover(screen)
	# creatign an instance of the class button for the play button
	play_button = Button(ai_settings, screen, "Play", 0 , 0)

	# creating a restart button 
	restart_button = Button(ai_settings, screen, "Restart", 800, 0)

	# gameover button to be displayed when the player runs out ships
	gameover_button = Button(ai_settings, screen, "Gameover", 200, 0)

	class Backround(pygame.sprite.Sprite):
		"""a Background class for the background image of the game"""
		def __init__(self, image_file, location):
			# call the sprite initializer
			pygame.sprite.Sprite.__init__(self) 
			self.image = pygame.image.load(image_file)
			self.rect = self.image.get_rect()
			self.rect.left, self.rect.top = location

	background = Backround('images/background.bmp', [0,0])

	screen.fill([255, 255, 255])
	screen.blit(background.image, background.rect)

	# boolean for quiting the game and setting the while loop to true
	running = True
			
	while running:
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				running = False
			elif event.type == pygame.KEYDOWN:
				if event.key == pygame.K_ESCAPE:
					sys.exit()
				if event.key == pygame.K_RIGHT:
					ship.moving_right = True

				if event.key == pygame.K_LEFT:
					ship.moving_left = True
				if event.key == pygame.K_SPACE:
					gf.fire_bullet(ai_settings, screen, ship, bullets)
				if event.key == pygame.K_p and  K_BACKSPACE:
					gf.p_keyboardplay(ai_settings, screen, stats, ship, startreks, bullets)
				# if event.key== pygame.K_BACKSPACE:
				# 	sleep(2)
			elif event.type == pygame.KEYUP:
				if event.key == pygame.K_RIGHT:
					ship.moving_right = False

				if event.key == pygame.K_LEFT:
					ship.moving_left = False

			elif event.type == pygame.MOUSEBUTTONDOWN:
				mouse_x, mouse_y = pygame.mouse.get_pos()
				gf.check_play_button(ai_settings, screen, stats,sb,  play_button,ship, startreks, bullets, mouse_x, mouse_y)
				gf.check_restart_button(ai_settings, screen, stats, restart_button, ship, startreks, bullets, mouse_x, mouse_y)

		# keyboard and mouse events
		# gf.check_events(ai_settings ,screen,ship, bullets)
		if stats.game_active:
			ship.update()
			gf.update_bullets(ai_settings, screen, stats, sb, ship, startreks, bullets)
			gf.update_startreks(ai_settings,stats, screen, ship, startreks, bullets)

		gf.update_screen(ai_settings,screen,stats,sb ,ship, startreks, bullets, play_button, restart_button, gameover_button)