Ejemplo n.º 1
0
def main():

    # Initialize pygame
    pygame.init()

    # Importing image
    background_image = pygame.image.load(bg_image_path)
    
    # Importing and Intialize Sound
    pygame.mixer.init()
    bg_sound = pygame.mixer.Sound(bg_sound_path)
    lose_sound = pygame.mixer.Sound(lose_sound_path)
    win_sound = pygame.mixer.Sound(win_sound_path)

    # Set up the screen (drawing surface for the game)
    screen = pygame.display.set_mode((window_width, window_height))
    
    # Game Window Title
    pygame.display.set_caption('Monster Game')
    
    # Calls the Clock object and sets it to variable clock (for shorthand purposes)
    clock = pygame.time.Clock()


    #################### Game initialization ####################

    # Created a monster instance
    game_monster = Monster(120, 120, 3, 3)
    game_hero = Hero(256, 240)
    game_goblin1 = Goblin(360, 360)
    game_goblin2 = Goblin(360, 360)
    game_goblin3 = Goblin(360, 360)

    # Sprite Groups
    monster_group = pygame.sprite.Group()
    monster_group.add(game_monster)

    hero_group = pygame.sprite.Group()
    hero_group.add(game_hero)

    goblin_group = pygame.sprite.Group()
    goblin_group.add(game_goblin1)
    goblin_group.add(game_goblin2)
    goblin_group.add(game_goblin3)

    # FPS settings
    FPS = 60

    # Music Start
    bg_sound.play()

    #################### While loop used to have the game continuously run ####################
    stop_game = False
    while not stop_game:

        # Event is for user input such as keypress to clicks
        for event in pygame.event.get():

            #Key Strokes Movement (Hero Movement and Enter Key)
            if event.type == pygame.KEYDOWN:
                if event.key == KEY_DOWN:
                    if game_hero.dead == False:
                        game_hero.dir_y = 3
                elif event.key == KEY_UP:
                    if game_hero.dead == False:
                        game_hero.dir_y = -3
                elif event.key == KEY_LEFT:
                    if game_hero.dead == False:
                        game_hero.dir_x = -3
                elif event.key == KEY_RIGHT:
                    if game_hero.dead == False:
                        game_hero.dir_x = 3
                elif event.key == KEY_ENTER:
                    print("Enter Works")
                    restart_level(game_monster, game_hero, game_goblin1, game_goblin2, game_goblin3)
                    monster_group.add(game_monster)
                    goblin_group.add(game_goblin1)
                    goblin_group.add(game_goblin2)
                    goblin_group.add(game_goblin3)
                    bg_sound.play()
            if event.type == pygame.KEYUP:
                if event.key == KEY_DOWN:
                    game_hero.dir_y = 0
                elif event.key == KEY_UP:
                    game_hero.dir_y = 0
                elif event.key == KEY_LEFT:
                    game_hero.dir_x = 0
                elif event.key == KEY_RIGHT:
                    game_hero.dir_x = 0

            # Event that if user clicks exit
            if event.type == pygame.QUIT:
                stop_game = True

        # Game logic

        # Renders background, monster, and hero image
        screen.blit(background_image, [0, 0])
        screen.blit(game_hero.image, [game_hero.x, game_hero.y])
        screen.blit(game_monster.image, [game_monster.x, game_monster.y])
        screen.blit(game_goblin1.image, [game_goblin1.x, game_goblin1.y])
        screen.blit(game_goblin2.image, [game_goblin2.x, game_goblin2.y])
        screen.blit(game_goblin3.image, [game_goblin3.x, game_goblin3.y])

        # Hero Movement
        game_hero.character_movement()
        game_hero.character_fence(1)
        game_hero.rect_update()

        # Monster Movement
        game_monster.monster_random_movement()
        game_monster.character_movement()        
        game_monster.character_fence(2)
        game_monster.rect_update()

        # Goblin Movement
        game_goblin1.monster_random_movement()
        game_goblin1.character_movement()
        game_goblin1.character_fence(2)
        game_goblin1.rect_update()
        game_goblin2.monster_random_movement()
        game_goblin2.character_movement()
        game_goblin2.character_fence(2)
        game_goblin2.rect_update()
        game_goblin3.monster_random_movement()
        game_goblin3.character_movement()
        game_goblin3.character_fence(2)
        game_goblin3.rect_update()

        # Sprite Collide
        collide_monster = pygame.sprite.spritecollide(game_hero, monster_group, True)
        collide_goblin = pygame.sprite.spritecollide(game_hero, goblin_group, True)

        if collide_monster:
            bg_sound.stop()
            game_hero.x = 230
            game_hero.y = 200
            game_monster.is_dead()
            win_sound.play()

        if collide_goblin:
            bg_sound.stop()
            game_monster.x = 500
            game_monster.y = 500
            game_hero.hero_dead()
            lose_sound.play()
            game_monster.dir_x = 0
            game_monster.dir_y = 0

        if game_monster.dead == True:
            font = pygame.font.Font(None, 20)
            play_again_text = font.render("Press `Enter` to Play Again!", True, (0, 0, 0))
            screen.blit(play_again_text, [172, 220])
            game_hero.x = 236
            game_hero.y = 185

        if game_hero.dead == True:
            font = pygame.font.Font(None, 20)
            play_again_text = font.render("Press `Enter` to Play Again!", True, (0, 0, 0))
            screen.blit(play_again_text, [172, 220])
            game_goblin1.x = 236
            game_goblin1.y = 185
            game_goblin2.x = 236
            game_goblin2.y = 185
            game_goblin3.x = 236
            game_goblin3.y = 185
            game_hero.dir_x = 0 
            game_hero.dir_y = 0

        # Game display
        pygame.display.update()

        # Set the tick rate to 60 ms, which means the game runs at 60 FPS
        clock.tick(FPS)

    pygame.quit()