예제 #1
0
def enter():
    global iku, background, Player, reimu, tenshi, marisa, PlayerHP, EnemyHP, Enemy_marisa, Enemy_reimu, Enemy_tenshi, Enemy_iku, EnemyPlayer, turn
    Player = DeckSelection.character
    EnemyPlayer = DeckSelection.Enemycharacter
    if turn == 1:
        if EnemyPlayer == 0:
            Enemy_marisa = Enemy_Marisa()
            game_world.add_object(Enemy_marisa, 1)
        elif EnemyPlayer == 1:
            Enemy_reimu = Enemy_Reimu()
            game_world.add_object(Enemy_reimu, 1)
        elif EnemyPlayer == 2:
            Enemy_iku = Enemy_Iku()
            game_world.add_object(Enemy_iku, 1)
        elif EnemyPlayer == 3:
            Enemy_tenshi = Enemy_Tenshi()
            game_world.add_object(Enemy_tenshi, 1)
        if Player == 0:
            reimu = Reimu()
            game_world.add_object(reimu, 1)
        elif Player == 1:
            marisa = Marisa()
            game_world.add_object(marisa, 1)
        elif Player == 2:
            iku = Iku()
            game_world.add_object(iku, 1)
        elif Player == 3:
            tenshi = Tenshi()
            game_world.add_object(tenshi, 1)
    elif turn == -1:
        if Player == 0:
            reimu = Reimu()
            game_world.add_object(reimu, 1)
        elif Player == 1:
            marisa = Marisa()
            game_world.add_object(marisa, 1)
        elif Player == 2:
            iku = Iku()
            game_world.add_object(iku, 1)
        elif Player == 3:
            tenshi = Tenshi()
            game_world.add_object(tenshi, 1)
        if EnemyPlayer == 0:
            Enemy_marisa = Enemy_Marisa()
            game_world.add_object(Enemy_marisa, 1)
        elif EnemyPlayer == 1:
            Enemy_reimu = Enemy_Reimu()
            game_world.add_object(Enemy_reimu, 1)
        elif EnemyPlayer == 2:
            Enemy_iku = Enemy_Iku()
            game_world.add_object(Enemy_iku, 1)
        elif EnemyPlayer == 3:
            Enemy_tenshi = Enemy_Tenshi()
            game_world.add_object(Enemy_tenshi, 1)
    background = BackGround()
    PlayerHP = Player_HP()
    EnemyHP = Enemy_HP()
    game_world.add_object(background, 0)
    game_world.add_object(PlayerHP, 0)
    game_world.add_object(EnemyHP, 0)
예제 #2
0
def create_marisa(ai_settings, screen, marisas, marisa_number, row_number):
    ''' Create a marisa and put her in the row. '''
    marisa = Marisa(ai_settings, screen)
    marisa_width = marisa.rect.width
    marisa.x = marisa_width + 2 * marisa_width * marisa_number
    marisa.rect.x = marisa.x
    marisa.y = marisa.rect.height + 2 * marisa.rect.height * row_number
    marisa.rect.y = marisa.y
    #经验:the reason why only a single row of marisa will be drawn is when call 'marisas.draw(screen)', python will draw every sprite under marisas by their different coordinator, which comes from the attribute of rect. so marisa.y is only a attribute for instance marisa, but won't recorded into the rect as their spatial coordinator.
    marisas.add(marisa)
예제 #3
0
def run_game():
    # Initial the game and create the game screen
    pygame.init()
    # 经验:it creates an instance in order to use the functions contains in Settings class
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption('Japari Park')

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

    # create the LS
    soumao = Soumao(ai_settings, screen)
    marisa = Marisa(ai_settings, screen)

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

    # Make a group of marisa
    marisas = Group()

    # Create a fleet of marisas
    gf.create_fleet(ai_settings, screen, marisas, soumao)

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

    # Strat the main loop
    while True:
        # Take action fot the mouse&keyboard event
        gf.check_events(ai_settings, screen, stats, play_button, soumao,
                        marisas, bullets, sb)

        # Redraw the screen during each time pass the loop
        gf.update_screen(ai_settings, screen, stats, sb, soumao, marisas,
                         bullets, play_button)

        # Keep the game inactive when soumao_limit is lower than 0 and therefore game_active is False
        if stats.game_active == True:
            soumao.update()
            marisa.update()
            bullets.update()

            # Update the position of bullets and 	delete unnecessary bullets
            gf.update_bullets(bullets, marisas, ai_settings, screen, soumao,
                              stats, sb)

            # Update the position of marisas, include the drop, single-direction movement, direction change when hit edges, etc.
            gf.update_marisas(ai_settings, screen, stats, soumao, marisas,
                              bullets, sb)
예제 #4
0
def check_bullet_marisa_collisions(bullets, marisas, ai_settings, screen,
                                   soumao, stats, sb):
    ''' Respond to bullet-marisa collisions. '''
    # Record rects of overlap bullets and marisas.
    # Delete overlap bullets and marisas
    collisions = pygame.sprite.groupcollide(bullets, marisas, True, True)
    # Create two type of bullets, one disappear when hit marisa, second continue fly untill goes out of screen.

    # Scoring when a marisa is collided with bullet
    if collisions:
        for marisas in collisions.values():
            stats.score += ai_settings.marisa_points * len(marisas)
            #print (stats.score)
            sb.prep_score()
        check_high_score(stats, sb)

    marisa = Marisa(ai_settings, screen)
    marisa_number_x = get_marisa_line(ai_settings, marisa.rect.width)
    number_rows = get_marisa_row(ai_settings, soumao.rect.height,
                                 marisa.rect.height)

    if len(marisas) == 0:
        # Destroy all existing bullets and create new fleet
        bullets.empty()
        ai_settings.increase_speed()

        # If the entire fleet is destroyed, increase a game level
        stats.level += 1
        sb.prep_level()
        # Call prep_level() to make sure the new level is displayed correctly

        create_fleet(ai_settings, screen, marisas, soumao)
    '''
예제 #5
0
def create_fleet(ai_settings, screen, marisas, soumao):
    ''' Create a fleet of marisa to destroy whole chewan. '''
    # Create a marisa and find number of marisa in a row.
    # One width/height of marisa between each of them.
    marisa = Marisa(ai_settings, screen)

    marisa_number_x = get_marisa_line(ai_settings, marisa.rect.width)
    number_rows = get_marisa_row(ai_settings, soumao.rect.height,
                                 marisa.rect.height)

    # Create a fleet of marisa
    #print (number_rows)
    #print (marisa_number_x)
    for row_number in range(number_rows):
        for marisa_number in range(marisa_number_x):
            create_marisa(ai_settings, screen, marisas, marisa_number,
                          row_number)
예제 #6
0
def update():
    global iku, background, Player, reimu, tenshi, marisa, PlayerHP, EnemyHP, Enemy_marisa, Enemy_reimu, Enemy_tenshi, Enemy_iku, EnemyPlayer, turn, turncheak

    for game_objcet in game_world.all_objects():
        game_objcet.update()
        if (turncheak == 1):
            game_world.remove_object(reimu)
            game_world.remove_object(marisa)
            game_world.remove_object(iku)
            game_world.remove_object(tenshi)
            game_world.remove_object(Enemy_reimu)
            game_world.remove_object(Enemy_marisa)
            game_world.remove_object(Enemy_iku)
            game_world.remove_object(Enemy_tenshi)
            if turn == 1:
                if EnemyPlayer == 0:
                    Enemy_marisa = Enemy_Marisa()
                    game_world.add_object(Enemy_marisa, 1)
                elif EnemyPlayer == 1:
                    Enemy_reimu = Enemy_Reimu()
                    game_world.add_object(Enemy_reimu, 1)
                elif EnemyPlayer == 2:
                    Enemy_iku = Enemy_Iku()
                    game_world.add_object(Enemy_iku, 1)
                elif EnemyPlayer == 3:
                    Enemy_tenshi = Enemy_Tenshi()
                    game_world.add_object(Enemy_tenshi, 1)
                if Player == 0:
                    reimu = Reimu()
                    game_world.add_object(reimu, 1)
                elif Player == 1:
                    marisa = Marisa()
                    game_world.add_object(marisa, 1)
                elif Player == 2:
                    iku = Iku()
                    game_world.add_object(iku, 1)
                elif Player == 3:
                    tenshi = Tenshi()
                    game_world.add_object(tenshi, 1)
            elif turn == -1:
                if Player == 0:
                    reimu = Reimu()
                    game_world.add_object(reimu, 1)
                elif Player == 1:
                    marisa = Marisa()
                    game_world.add_object(marisa, 1)
                elif Player == 2:
                    iku = Iku()
                    game_world.add_object(iku, 1)
                elif Player == 3:
                    tenshi = Tenshi()
                    game_world.add_object(tenshi, 1)
                if EnemyPlayer == 0:
                    Enemy_marisa = Enemy_Marisa()
                    game_world.add_object(Enemy_marisa, 1)
                elif EnemyPlayer == 1:
                    Enemy_reimu = Enemy_Reimu()
                    game_world.add_object(Enemy_reimu, 1)
                elif EnemyPlayer == 2:
                    Enemy_iku = Enemy_Iku()
                    game_world.add_object(Enemy_iku, 1)
                elif EnemyPlayer == 3:
                    Enemy_tenshi = Enemy_Tenshi()
                    game_world.add_object(Enemy_tenshi, 1)
            turncheak = 0