Пример #1
0
def run_game():
    """Main game loop"""
    # NOTE: Pre init to reduce audio lag and oddities
    pygame.mixer.pre_init(44100, -16, 2, 2048)
    pygame.mixer.init()
    pygame.init()
    blast_settings = Settings()
    screen = pygame.display.set_mode(
        (blast_settings.screen_width, blast_settings.screen_height))
    pygame.display.set_caption("Blast!")
    play_button = Button(blast_settings, screen, "Play")
    stats = GameStats(blast_settings)
    sb = Scoreboard(blast_settings, screen, stats)
    ship = Ship(blast_settings, screen)
    bg = Background(screen)
    bullets = Group()
    enemies = Group()
    gf.create_fleet(blast_settings, screen, ship, enemies)
    menuMusic = pygame.mixer.Sound('../audio/menuMusic.ogg')
    menuMusic.play()

    while True:
        gf.check_events(blast_settings, screen, stats, sb, play_button, ship,
                        enemies, bullets)
        gf.update_screen(blast_settings, screen, stats, sb, ship, enemies,
                         bullets, play_button, bg)
        if stats.game_active:
            menuMusic.stop()
            ship.update()
            gf.update_bullets(blast_settings, screen, stats, sb, ship, enemies,
                              bullets)
            gf.update_enemies(blast_settings, screen, stats, sb, ship, enemies,
                              bullets)
Пример #2
0
def run_game():
    pygame.init()
    ai_settings = Sett()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    screen.fill((255, 255, 255))

    pygame.display.set_caption("Gate Control")
    stats = GameStats(ai_settings)
    play_button = Button(ai_settings, screen, "Play")
    ship = Ship(screen, ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)

    bullets = Group()
    enemies = Group()

    game.create_fleet(ai_settings, screen, ship, enemies)

    running = True  #Change for autimatical end of the loop

    while running:
        game.check_events(sb, ship, bullets, ai_settings, screen, stats,
                          play_button, enemies)
        if stats.game_active:
            game.update_bullets_and_remove(enemies, bullets, screen, ship,
                                           ai_settings, stats,
                                           sb)  #Removing old bullets
            game.update_enemies(ai_settings, enemies, ship, stats, screen,
                                bullets, sb)
        game.update_screen(sb, ship, bullets, ai_settings, screen, stats,
                           enemies, play_button)
Пример #3
0
def run_game():
    # Initializes game and creates 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("Space Invaders")
    # Game statistic and scoreboard creation
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)
    # Button creation
    play_button = Button(ai_settings, screen, "Play")
    # Ship creation
    ship = Ship(ai_settings, screen)
    # Make a group of lasers and enemies
    lasers = Group()
    enemies = Group()
    # Make enemies
    gf.create_fleet(ai_settings, screen, ship, enemies)
    # Main game loop
    while True:
        # Keyboard/Mouse event listener
        gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
                        enemies, lasers)
        if stats.game_active:
            ship.update()
            gf.update_lasers(ai_settings, screen, stats, sb, ship, lasers,
                             enemies)
            gf.update_enemies(ai_settings, stats, screen, sb, ship, enemies,
                              lasers)

        # Screen re-draw
        gf.update_screen(ai_settings, screen, stats, sb, ship, enemies, lasers,
                         play_button)
Пример #4
0
def run_game():
    # initialize the 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")

    play_button = Button(ai_settings, screen, "Play")
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)
    # 创建一艘飞船,一个用于存储子弹的编组,一个外星人群组
    ship = Ship(ai_settings, screen)
    bullets = Group()
    enemies = Group()

    gf.create_fleet(ai_settings, screen, ship, enemies)

    # begin the mainly loop
    while True:
        gf.check_events(ai_settings, screen, stats, sb, play_button, ship,
                        enemies, bullets)
        if stats.game_active:
            ship.update()
            gf.update_bullets(ai_settings, screen, stats, sb, ship, enemies,
                              bullets)
            gf.update_enemies(ai_settings, stats, sb, screen, ship, enemies,
                              bullets)
        gf.update_screen(ai_settings, stats, sb, screen, ship, enemies,
                         bullets, play_button)
Пример #5
0
def run_game():
    """ 游戏主程序 """
    # 游戏初始化
    pygame.init()
    game_settings = Settings()
    screen = pygame.display.set_mode(
        (game_settings.screen_width, game_settings.screen_height))
    pygame.display.set_caption(game_settings.caption)

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

    # 创建统计信息实例
    stats = GameStats(game_settings)

    # 创建记分牌
    score_board = Scoreboard(game_settings, screen, stats)

    # 创建一架飞机
    plane = Plane(game_settings, screen)

    # 创建子弹编组
    bullets = Group()

    # 创建敌机编组
    enemies = Group()
    # 创建敌机群
    game_functions.create_fleet(game_settings, screen, enemies, plane)

    # 游戏主循环
    while True:

        # 鼠标键盘检测
        game_functions.check_events(game_settings, screen, bullets, enemies,
                                    plane, play_button, stats, score_board)

        if stats.game_active:
            # 飞机移动状态更新
            plane.update()
            # 子弹更新
            game_functions.update_bullets(game_settings, screen, plane,
                                          bullets, enemies, stats, score_board)
            # 敌机位置更新
            game_functions.update_enemies(game_settings, screen, plane,
                                          bullets, enemies, stats, score_board)

        # 更新屏幕
        game_functions.update_screen(game_settings, screen, plane, bullets,
                                     enemies, stats, play_button, score_board)
Пример #6
0
def run_game():
    # Initialise pygame, settings and screen object
    pygame.init()
    game_settings = Settings()
    screen = pygame.display.set_mode(
        (game_settings.screen_width, game_settings.screen_height))
    pygame.display.set_caption("Flatpormer")

    # Create the scoreboard for game information and stats
    high_score = gf.get_high_score()
    stats = GameStats(game_settings, high_score)
    scoreboard = ScoreBoard(game_settings, screen, stats)

    # Create a character instance
    character = Character(screen, game_settings)
    # Create a level with platforms and enemies
    level = Level(screen, character, game_settings)
    # Create the play button
    play_button = Button(game_settings, screen)
    # Initialise joystick
    pygame.joystick.init()
    gamepad = pygame.joystick.Joystick(0)
    gamepad.init()

    # load sounds
    sounds = gf.load_sounds()

    # Start the main loop for the game.
    while True:
        gf.check_events(screen, character, level, game_settings, stats,
                        scoreboard, play_button, sounds, gamepad)
        if pygame.joystick.get_count() > 0:
            gf.check_gamepad_direction(gamepad, character)

        if stats.game_active:
            gf.check_platform_collisions(character, level.platforms)
            gf.check_gravity(character, level.platforms)
            character.update()
            gf.update_enemies(level)
            # Check for player-enemy collisions
            gf.check_enemy_collision(screen, character, game_settings,
                                     scoreboard, level, stats, sounds)
            # Check if player has completed the level
            gf.check_level_complete(screen, character, game_settings, level,
                                    scoreboard, stats, sounds)

        gf.update_screen(screen, character, game_settings, level, scoreboard,
                         stats, play_button)
Пример #7
0
def run_game():

    #Inicjalizacja gry i utworzenie obiektu ekranu.

    pygame.init()
    #pygame.mixer.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Star Wars")

    #pygame.mixer.music.load('music.wav')
    #pygame.mixer.music.play(-1)

    #Dane statystyczne
    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)
    #Utworzenie statku

    Tie_Fighter = Enemy(ai_settings, screen)
    X_Wing = xWing(ai_settings, screen)
    bullets = Group()
    enemies = Group()

    gf.create_fleet(ai_settings, screen, X_Wing, enemies)

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

    #Rozpoczęcie pętli głównej gry.

    while True:

        #Oczekiwanie na wciśnięcie klawisza lub przycisku myszy.

        gf.check_events(ai_settings, screen, stats, sb, play_button, X_Wing,
                        enemies, bullets)

        if stats.game_active:
            X_Wing.update()
            gf.update_bullets(ai_settings, screen, stats, sb, X_Wing, enemies,
                              bullets)
            gf.update_enemies(ai_settings, stats, screen, sb, X_Wing, enemies,
                              bullets)

        gf.update_screen(ai_settings, screen, stats, sb, X_Wing, enemies,
                         bullets, play_button)
Пример #8
0
def run_game():
    """
    Initialize game and create a screen object
    """
    pygame.init()
    game_settings = Settings()
    screen = pygame.display.set_mode((game_settings.screen_width, game_settings.screen_height))
    pygame.display.set_caption("Rebel Defender")
    clock = pygame.time.Clock()

    # Make play button
    play_button = Button(game_settings, screen, "Play")

    # Store game statistics
    stats = GameStats(game_settings)

    # Scoreboard
    sb = Scoreboard(game_settings, screen, stats)

    # Make a ship
    ship = Ship(game_settings, screen)
    icon_ship = IconShip(game_settings, screen)

    # Make a a group of enemies
    enemies = Group()
    gf.create_fleet(game_settings, screen, ship, enemies)

    # Make a cache of bullets
    bullets = Group()

    # Make starfield
    starfield = Starfield(game_settings).generate_starfield()

    # Start the main loop of the game
    while True:
        clock.tick(50)

        gf.check_events(game_settings, stats, sb, screen, ship, enemies, bullets, play_button)

        if stats.game_active:
            ship.update()
            gf.update_bullets(game_settings, screen, stats, sb, ship, enemies, bullets)
            gf.update_enemies(game_settings, stats, screen, sb, ship, enemies, bullets)

        gf.update_screen(game_settings, screen, stats, sb, starfield, ship, enemies, bullets, play_button)
Пример #9
0
def run_game():
    # Initialize pygame, settings and create a screen object
    pygame.init()

    sws_settings = Settings()

    screen = pygame.display.set_mode(
        (sws_settings.screen_width, sws_settings.screen_height))
    pygame.display.set_caption('Sideways Shooter')

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

    # Create an instance to store game statistics and create a scoreboard
    stats = GameStats(sws_settings)
    sb = ScoreBoard(sws_settings, screen, stats)

    # Make a ship, bullets and an enemy
    ship = Ship(sws_settings, screen)
    bullets = Group()
    enemies = Group()
    gf.create_enemy(sws_settings, screen, ship, enemies)

    # Start the main loop for the game
    while True:
        # Watch for keyboard and mouse events
        gf.check_events(sws_settings, screen, stats, sb, play_button, ship,
                        enemies, bullets)

        if stats.game_active:
            ship.update()
            gf.update_enemies(sws_settings, stats, screen, sb, ship, enemies,
                              bullets)

        gf.update_screen(sws_settings, screen, stats, sb, ship, enemies,
                         bullets, play_button)
Пример #10
0
def run_game():
    # initiate 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('Shoot Trump, Save the World')

    # create play button
    btn_play = Button(ai_settings, screen, 'Play')

    # create a tank
    tank = Tank(ai_settings, screen)
    # create bullet group
    bullets = Group()
    # create enemy
    enemies = Group()
    gf.create_fleet(ai_settings, screen, tank, enemies)
    # create game stats instance
    stats = Game_stats(ai_settings)
    scoreboard = Scoreboard(ai_settings, screen, stats)

    # game main loop
    while True:
        # moniter keyboard and mouse event
        gf.check_events(ai_settings, screen, stats, scoreboard, btn_play, tank,
                        enemies, bullets)
        if stats.game_active:
            tank.update()
            gf.update_bullets(ai_settings, screen, stats, scoreboard, tank,
                              bullets, enemies)
            gf.update_enemies(ai_settings, stats, scoreboard, screen, tank,
                              enemies, bullets)

        gf.update_screen(ai_settings, screen, stats, scoreboard, tank, enemies,
                         bullets, btn_play)
Пример #11
0
def run_game():
    # 初期化一个
    pygame.init()
    ai_settings = Settings()
    tank_map.set_map("user_id", "")
    tank_map.set_map("score", 0)
    tank_map.set_map("double_flg", 0)

    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Tank Battle")

    # 创建一个坦克
    tank = Tank(ai_settings, screen)
    tank2 = None

    # 创建一个子弹分组
    bullets = Group()
    # 创建一个敌人子弹分组
    enemy_bullets = Group()
    # 创建一个敌人编组
    enemies = Group()
    # 创建一个敌人
    # enemy = Enemy(ai_settings, screen)
    # 创建外敌人群
    gf.create_fleet(ai_settings, screen, enemies)

    # 创建一个砖墙编组
    gf.create_map(ai_settings, screen)
    # 创建一个炸弹的编组
    booms = Group()
    # bg_color = (230, 230, 230)

    stats = GameStats(ai_settings)
    # 创建一个Font对象
    font = pygame.font.SysFont("arial", 36)
    font.set_bold(True)

    clock = pygame.time.Clock()

    wait_count = 0
    invincible_count = 0
    ranking_is_show = False
    # 开启游戏主循环
    while True:
        clock.tick(100)
        # 监视键盘鼠标
        gf.check_events(ai_settings, screen, tank, tank2, bullets, stats)

        if stats.game_active:
            if stats.game_step == GameStep.login:
                wait_count += 1
                user_id = tank_map.get_map("user_id")
                gf.login(screen, wait_count, user_id)
                if wait_count > 100:
                    wait_count = 0
            elif stats.game_step == GameStep.init:
                wait_count = 0
                gf.start_image_update(tank, screen)

            elif stats.game_step == GameStep.ready:
                gf.init_home(ai_settings, screen)
                # 关卡信息显示
                wait_count += 1
                text_surface = font.render(u'level {0}'.format(stats.level),
                                           False, ai_settings.failed_color)
                text_rect = text_surface.get_rect()
                text_rect.centerx = screen.get_rect().centerx
                text_rect.centery = screen.get_rect().centery
                screen.fill(ai_settings.bg_color)
                screen.blit(text_surface, text_rect)
                pygame.display.flip()
                if wait_count == 100:
                    wait_count = 0
                    stats.game_step = GameStep.start
            elif stats.game_step == GameStep.start:
                ranking_is_show = False
                # 显示第二个英雄
                if ai_settings.has_tank2 and tank2 is None:
                    tank2 = Tank(ai_settings, screen, 2)
                    tank2.x = 300
                    tank2.rect.bottom = screen.get_rect().bottom - 20
                    tank2.y = tank2.rect.y
                    tank2.moving_image = tank2.image
                    tank_map.set_map("double_flg", 1)
                if not ai_settings.has_tank2:
                    tank2 = None

                wait_count += 1
                # 每隔500,刷出敌人
                if wait_count == 500:
                    wait_count = 0
                    if len(enemies) < ai_settings.enemies_allowed:
                        gf.create_fleet(ai_settings, screen, enemies)

                # 无敌的计算
                if tank.is_invincible or (tank2 is not None
                                          and tank2.is_invincible):
                    invincible_count += 1
                if invincible_count == 400:
                    invincible_count = 0
                    tank.is_invincible = False
                    if tank2 is not None:
                        tank2.is_invincible = False

                # 刷新英雄坦克位置
                tank.update()
                if tank2 is not None:
                    tank2.update()
                # enemy.upadte(bullets)

                # 其他显示精灵刷新
                gf.update_bullets(ai_settings, enemies, tank, tank2, bullets,
                                  enemy_bullets, screen, stats, booms)
                gf.update_enemies(enemies, enemy_bullets, stats)
                gf.update_booms(booms)
                gf.update_screen(ai_settings, screen, tank, tank2, enemies,
                                 bullets, enemy_bullets, booms)
                # print(len(enemy_bullets))
            elif stats.game_step == GameStep.levelChange:
                wait_count = 0
                stats.level += 1
                tank.x = 120
                tank.y = 280
                stats.game_step = GameStep.init
                ai_settings.enemies_allowed = ai_settings.enemies_all * stats.level
                gf.init_tank(tank, 0, screen)
                if tank2 is not None:
                    gf.init_tank(tank2, 1, screen)
                stats.game_step = GameStep.ready
            elif stats.game_step == GameStep.total:
                # 显示排行榜
                if not ranking_is_show:
                    ranking_is_show = True
                    gf.show_ranking_list(screen)
        else:
            gf.over_image_update(screen)
Пример #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("Your Life")

    #设置背景图片
    background = Bg(ai_settings, screen)

    #鼠标设置为准心
    aim = Mouse(ai_settings, screen)

    #创建主角
    char = Char(ai_settings, screen)
    mysprite = MySprite(screen, char)

    #创建敌人
    enemies = Group()

    # #创建计时器
    # timer = Timeclock()

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

    # 创建Quit按钮
    quit_button = Quit_Button(ai_settings, screen, "Quit")

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

    #添加背景音乐循环播放
    pygame.mixer.music.load('music/game_over.wav')
    pygame.mixer.music.play(-1, 0.0)
    while True:

        gf.check_events(ai_settings, screen, char, stats, sb, play_button,
                        quit_button, background, enemies)
        gf.update_screen(ai_settings, screen, stats, sb, play_button,
                         quit_button, aim, background, char, enemies)

        if stats.game_active:
            gf.update_enemies(ai_settings, screen, sb, stats, char, background,
                              enemies, play_button, quit_button)

            #不同阶段玩家形态不同,敌人也不同
            if background.bg_x > -400 and background.bg_x <= 0:

                #添加文字说明
                myfont = pygame.font.Font(None, 100)
                myfont.set_underline(True)
                myfont.set_bold(True)
                textImage = myfont.render("babyhood", True, (255, 255, 0))
                screen.blit(textImage, (210, 100))

                #更新主角
                char.update_default(screen, background)
                mysprite.update_stage1(char)
                mysprite.load("images/baby_72x36x3.png", 72, 36, 3)
                gf.char_walking(screen, mysprite, char)

            elif background.bg_x < -400 and background.bg_x > -1200:

                #添加文字说明
                myfont = pygame.font.Font(None, 100)
                myfont.set_underline(True)
                myfont.set_bold(True)
                textImage = myfont.render("childhood", True, (255, 255, 0))
                screen.blit(textImage, (210, 100))

                #更新敌人图片
                for enemy in enemies:
                    enemy.image = pygame.image.load(
                        'images/duck.png').convert_alpha()

                #更新主角图片
                char.update_stage1(screen, background)
                mysprite.update_stage1(char)
                mysprite.load("images/child_48x72x4.png", 48, 72, 4)
                gf.char_walking(screen, mysprite, char)

            elif background.bg_x < -1200 and background.bg_x > -2000:

                #添加文字说明
                myfont = pygame.font.Font(None, 100)
                myfont.set_underline(True)
                myfont.set_bold(True)
                textImage = myfont.render("youth", True, (255, 255, 0))
                screen.blit(textImage, (280, 100))

                for enemy in enemies:
                    enemy.image = pygame.image.load(
                        'images/mathbook.png').convert_alpha()

                char.update_stage2(screen, background)
                mysprite.update_stage1(char)
                mysprite.load("images/teenager_48x112x4.png", 48, 112, 4)
                gf.char_walking(screen, mysprite, char)

            elif background.bg_x < -2000 and background.bg_x > -2800:

                #添加文字说明
                myfont = pygame.font.Font(None, 100)
                myfont.set_underline(True)
                myfont.set_bold(True)
                textImage = myfont.render("middle age", True, (255, 255, 0))
                screen.blit(textImage, (210, 100))

                for enemy in enemies:
                    enemy.image = pygame.image.load(
                        'images/paperclip.png').convert_alpha()

                char.update_stage3(screen, background)
                char.blitme()

            elif background.bg_x < -2800 and background.bg_x > -3600:
                #添加文字说明
                myfont = pygame.font.Font(None, 100)
                myfont.set_underline(True)
                myfont.set_bold(True)
                textImage = myfont.render("old age", True, (255, 255, 0))
                screen.blit(textImage, (280, 100))

                for enemy in enemies:
                    enemy.image = pygame.image.load(
                        'images/drug.png').convert_alpha()

                char.update_stage4(screen, background)
                mysprite.update_stage1(char)
                mysprite.load("images/bold_48x96x2.png", 48, 96, 2)
                gf.char_walking(screen, mysprite, char)

            elif background.bg_x < -3600 and background.bg_x > -4800:

                for enemy in enemies:
                    enemy.image = pygame.image.load(
                        'images/star.png').convert_alpha()

                char.update_stage5(screen, background)
                char.blitme()
                #添加文字,创建对象
                myfont = pygame.font.Font(None, 50)
                #修饰文字
                myfont.set_underline(True)
                myfont.set_bold(True)
                myfont.set_italic(True)

                textImage1 = myfont.render("Congratulations!", True,
                                           (144, 238, 0))
                textImage2 = myfont.render(
                    "You have gone through your entire life!", True,
                    (144, 238, 0))
                textImage3 = myfont.render("Thanks for playing!", True,
                                           (144, 238, 0))

                screen.blit(textImage1, (220, 100))
                screen.blit(textImage2, (30, 150))
                screen.blit(textImage3, (220, 200))

                #虽然玩家还可以移动,并且敌人继续掉落,但游戏结束了,即便你继续射击敌人也不会有分数,玩家也不会死亡
                ai_settings.enemy_points = 0
                ai_settings.enemy_damage = 0

        pygame.display.update()
Пример #13
0
HEIGHT = BG_IMGS[0].get_height()
WIDTH = BG_IMGS[0].get_width()

done = False
bg = Background(settings, BG_IMGS, HEALTH_IMG, PROJECTILE_IMG)
player = Player(settings, 100, 620, F_PENGUIN_IMGS, B_PENGUIN_IMGS)
enemies = [Enemy(settings, 1200, random.randint(530, 630), B_PENGUIN_IMGS)]

loot_list = []
enemy_bullets = Group()
player_bullets = Group()
clock = pygame.time.Clock()

while not done:
    gf.check_events(settings, player, player_bullets, F_PROJECTILE_IMG,
                    B_PROJECTILE_IMG)
    player.update()
    gf.update_enemy_bullets(enemy_bullets, player)
    gf.update_player_bullets(settings, player_bullets, enemies, loot_list,
                             LOOT_IMGS)
    gf.update_enemies(settings, enemies, B_PENGUIN_IMGS)
    gf.take_shot(settings, enemy_bullets, enemies, player, F_PROJECTILE_IMG,
                 B_PROJECTILE_IMG)
    gf.update_loot(settings, loot_list, player)
    bg.draw(settings, screen, enemies, player_bullets, enemy_bullets,
            loot_list, player, STAT_FONT)
    bg.move()
    pygame.display.flip()
    clock.tick(settings.fps_multipler * 30)