Esempio n. 1
0
 def __init_player(self):
     self.player = Player()
     self.player.connect(SIGNAL('before_play()'), self.player_before_play)
     self.player.connect(SIGNAL('playing()'), self.player_playing)
     self.player.connect(SIGNAL('pause()'), self.player_pause)
     self.player.connect(SIGNAL('proceed()'), self.player_proceed)
     self.player.connect(SIGNAL('play_finished()'), self.player_finished)
     self.player.connect(SIGNAL('stopped()'), self.player_stopped)
Esempio n. 2
0
 def __init__(self):
     self.se = se()
     self.player = Player()
     self.running, self.playing = True, False
     self.current_round = 1
     self.basic_groups = set_enemies()
     self.boss_groups = set_bosses()
     self.enemies = None
Esempio n. 3
0
 def __init__(self, name, hand, personality):
     '''
     Constructor for an Autoplayer.
     :param name: string - name of the dealer
     :param hand: Hand - hand corresponding to the autoplayer
     :param personality: Personality - AI personality/strategy of the autoplayer
     '''
     Player.__init__(self, name, hand)
     self.personality = personality
Esempio n. 4
0
 def __init__(self):
     self.__screen = pygame.display.set_mode((1000, 700))
     self.__vaccines_background = VaccineBackground()
     self.__player = Player()
     self.__heart = Heart()
     self.__vaccine = Vaccine()
     self.__handle_crocodile_human = HandleCrocodileToHuman()
     self.__virus_manager = VirusManager()
     self.__collision = Collisions()
     self.__sound = Sound()
Esempio n. 5
0
 def check_resps(self, update):
     chat_id = update.message.chat_id
     if str.lower(self.movie['base']['title']) == str.lower(update.message.text):
         player = Player(update.message.from_user.id)
         player.name = update.message.from_user.first_name+" "+update.message.from_user.last_name
         try:
             self.session.player_add(player)
         except ValueError as e:
             pass
         self.session.players[update.message.from_user.id].add_points(1)
         self.session.messenger.send_msg(chat_id,
                                         msg=(player.name, _("correct_answer")),
                                         type_msg='bold')
         self.movie = None
         self.session.status = "stopped"
Esempio n. 6
0
 def check_resps(self, update):
     chat_id = update.message.chat_id
     if str.lower(self.movie['base']['title']) == str.lower(update.message.text):
         player = Player(update.message.from_user.id)
         player.name = update.message.from_user.first_name + \
             " "+update.message.from_user.last_name
         try:
             self.session.player_add(player)
         except ValueError as e:
             pass
         self.session.players[update.message.from_user.id].add_points(1)
         self.session.messenger.send_msg(chat_id,
                                         msg=(player.name, _(
                                             "correct_answer")),
                                         type_msg='bold')
         self.movie = None
         self.session.status = "stopped"
Esempio n. 7
0
 def __init__(self, player_names):
     self.players = [
         Player(i, player_names[i]) for i in range(0, len(player_names))
     ]
     self.players_display = '\n'.join([
         '%d: %s' % (self.players[i].getId(), self.players[i].getName())
         for i in range(0, len(self.players))
     ])
Esempio n. 8
0
    def init_game(self, player_msg):

        self.players = {}
        self.loading = False
        self.running = True

        for player in player_msg.items():
            # player[0] is player_number
            # player[1] is instruction
            # player[2] is player type
            player_info = player[1]
            x_axis = player_info[0]
            y_axis = player_info[1]
            new_player = Player(x_axis, y_axis, player[0])

            if player_info[2] == 'wolf':
                new_player.becomes_it()

            self.players[player[0]] = new_player
Esempio n. 9
0
def AddSong(request, videoId):
    token_str = request.COOKIES['token']
    token = AuthToken.Get(token_str)

    player = Player.instance()
    url = "https://www.youtube.com/watch?v={}".format(videoId)
    result = player.addSong(token.user, url)

    if result is True:
        return HttpResponse()
    else:
        return HttpResponse(status=400)
Esempio n. 10
0
    def reset(self):
        '''
        Reinitializes the game.
        '''
        if not self.is_end() and not self.added_to_scoreboard:
            self.dealer_wins += 1

        self.deck.shuffle()

        player_hand = Hand(self.deck)
        dealer_hand = Hand(self.deck)
        dealer = Dealer(dealer_hand, player_hand)

        self.player = Player("Player", player_hand)
        self.dealer = Autoplayer("Dealer", dealer_hand, dealer)

        self.player.draw()
        self.dealer.draw()
        self.player.draw()

        self.dealer_turn = False
        self.added_to_scoreboard = False
Esempio n. 11
0
def Queue(request, ids=None):
    print("Request: {}".format(request))
    print("Queue!")
    token_str = request.COOKIES['token']
    print("Huh?")
    token = AuthToken.Get(token_str)

    print("Got token, getting player!")
    player = Player.instance()
    player.queueSong(token.user, ids)

    print("Queue here: {}".format(ids))
    return HttpResponse()
Esempio n. 12
0
    def init_game(self, player_msg, board):

        self.players = {}
        self.loading = False
        self.running = True

        for border in board:
            self.borders.append(pygame.Rect(border[0], border[1], border[2], border[3]))

        for player in player_msg.items():
            # player[0] is player_number
            # player[1] is instruction
            # player[2] is player type
            player_info = player[1]
            x_axis = player_info[0]
            y_axis = player_info[1]
            new_player = Player(x_axis, y_axis, player[0])

            if player_info[2] == 'wolf':
                new_player.becomes_it()

            self.players[player[0]] = new_player
Esempio n. 13
0
def Status(request):
    player = Player.instance()
    song = player.getCurrentSong()
    data = {}
    data['playing'] = player.isPlaying()
    if song is not None and player.isPlaying():
        data['title'] = song.title
    else:
        data['title'] = ""
    data['time'] = player.getTime()
    data['length'] = player.getLength()
    data['volume'] = player.getVolume()

    return HttpResponse(json.dumps(data))
Esempio n. 14
0
    def __init__(self):
        '''
        Constructor for a Game.
        '''
        self.deck = Deck()
        self.deck.shuffle()

        player_hand = Hand(self.deck)
        dealer_hand = Hand(self.deck)
        dealer = Dealer(dealer_hand, player_hand)

        self.player = Player("Player", player_hand)
        self.dealer = Autoplayer("Dealer", dealer_hand, dealer)

        self.player.draw()
        self.dealer.draw()
        self.player.draw()

        self.dealer_turn = False

        self.player_wins = 0
        self.dealer_wins = 0
        self.added_to_scoreboard = False
Esempio n. 15
0
class Game:
    def __init__(self):
        self.se = se()
        self.player = Player()
        self.running, self.playing = True, False
        self.current_round = 1
        self.basic_groups = set_enemies()
        self.boss_groups = set_bosses()
        self.enemies = None

    def enemies_round_select(self):
        self.basic_groups = set_enemies()
        self.boss_groups = set_bosses()

        if self.current_round < 3:
            return random.choice(self.basic_groups)
        elif self.current_round == 3:
            return random.choice(self.boss_groups)

    def game_options(self):
        while self.running:

            if not self.se.playing_music:
                self.se.playMenu()

            print("1. Play Game   2. Exit Game")

            user_option = self.get_valid_number()

            if user_option == 1:
                self.se.chime_sound()
                time.sleep(1)
                self.playing = True
                self.se.stop_menu_music()
                self.play_game()

            elif user_option == 2:
                print("Exiting Game...")
                time.sleep(0.5)
                self.se.stop_menu_music()
                self.running = False

    def print_enemies(self):
        for index, badGuy in enumerate(self.enemies):
            print(f"{index + 1}. {badGuy.get_name()}")

    def get_taunter(self):
        for enemy in self.enemies:
            if isinstance(enemy, ShieldUser):
                return enemy if enemy.is_taunting() else None

        return None

    def choose_enemy(self):
        if self.player.blocking:
            return

        self.print_enemies()
        chosen_bad_guy = self.get_valid_number()
        taunting_enemy = self.get_taunter()

        if taunting_enemy is not None:
            return taunting_enemy

        while True:
            if chosen_bad_guy > len(self.enemies) or chosen_bad_guy < 1:
                print("Not an option")
                chosen_bad_guy = self.get_valid_number()
            else:
                chosen_bad_guy -= 1
                break

        return self.enemies[chosen_bad_guy]

    def check_for_taunt(self, enemies: dict):
        for enemy in enemies:
            if isinstance(enemy, ShieldUser) and enemy.is_taunting():
                return enemy
            else:
                return self.choose_enemy()

    def potion_drop(self):
        potion_chance = random.randrange(100)
        if potion_chance <= 30:
            self.player.new_potion()

    def display_enemies(self):
        for enemy in self.enemies:
            print(f"""\n {enemy.name} 
               Health 💗      {enemy.health}
               Damage ⚔�   {enemy.damage}\n""")

    def remove_dead_enemies(self):
        for enemy in self.enemies:
            if enemy.is_dead():
                self.enemies.pop(self.enemies.index(enemy))

    def is_round_over(self):
        return True if len(self.enemies) <= 0 else False

    def get_valid_number(self):
        while True:
            try:
                user_option = int(input())
                self.se.ding_sound()
                break
            except ValueError:
                print("Can not enter nothing!!")
            except TypeError:
                print("Must be a valid number.")

        return user_option

    def enemies_phases(self):
        if self.player.health <= 0:
            return

        for enemy in self.enemies:
            if not enemy.is_dead():
                enemy.enemy_phase(self.player)
                time.sleep(1.5)

    def is_player_dead(self):
        return True if self.player.health <= 0 else False

    def display_all_displayables(self):
        self.display_enemies()
        self.player.display_player_stats()
        self.player.display_user_options()

    def new_round(self, current_round):
        current_round += 1
        self.enemies = self.enemies_round_select()

        if current_round > 2:
            self.playing = False

        return current_round

    def player_died(self):

        self.se.stop_battle_music()
        self.se.death_sound()

        time.sleep(4)

        print("\n\nYou Died!")

        self.playing = False

    def get_valid_player_option(self):
        while True:
            user_option = self.get_valid_number()
            if user_option < 1 or user_option > 4:
                print("Not a valid player option! Try Again.")
                continue

            if user_option == 2:
                self.player.blocking = True

            return user_option

    def play_game(self):

        self.player.reset_player()
        self.enemies = self.enemies_round_select()
        self.se.play_battle_music()
        current_round = 1

        while self.playing:
            self.remove_dead_enemies()

            if self.is_round_over():
                current_round = self.new_round(current_round)

            self.display_all_displayables()

            player_option = self.get_valid_player_option()
            chosen_enemy = self.choose_enemy()

            self.player.player_phase(player_option, chosen_enemy)
            self.enemies_phases()
            self.player.unblock()

            if self.is_player_dead():
                self.player_died()

        self.se.stop_battle_music()
        self.game_options()
Esempio n. 16
0
def Next(request):
    Player.instance().nextSong()
    return HttpResponse()
Esempio n. 17
0
def Stop(request):
    Player.instance().stop()
    return HttpResponse()
Esempio n. 18
0
def GetLength(request):
    return HttpResponse(Player.instance().getLength())
Esempio n. 19
0
def SetTime(request, time):
    time = int(time)
    Player.instance().setTime(time)
    return HttpResponse(Player.instance().getTime())
Esempio n. 20
0
def GetTime(request):
    return HttpResponse(Player.instance().getTime())
Esempio n. 21
0
def SetVolume(request, volume):
    volume = int(volume)
    Player.instance().setVolume(volume)
    return HttpResponse(Player.instance().getVolume())
Esempio n. 22
0
class Game():
    '''
    Class used for handling a game of blackjack between two players, one of which is a dealer.
    '''
    def __init__(self):
        '''
        Constructor for a Game.
        '''
        self.deck = Deck()
        self.deck.shuffle()

        player_hand = Hand(self.deck)
        dealer_hand = Hand(self.deck)
        dealer = Dealer(dealer_hand, player_hand)

        self.player = Player("Player", player_hand)
        self.dealer = Autoplayer("Dealer", dealer_hand, dealer)

        self.player.draw()
        self.dealer.draw()
        self.player.draw()

        self.dealer_turn = False

        self.player_wins = 0
        self.dealer_wins = 0
        self.added_to_scoreboard = False

    def reset(self):
        '''
        Reinitializes the game.
        '''
        if not self.is_end() and not self.added_to_scoreboard:
            self.dealer_wins += 1

        self.deck.shuffle()

        player_hand = Hand(self.deck)
        dealer_hand = Hand(self.deck)
        dealer = Dealer(dealer_hand, player_hand)

        self.player = Player("Player", player_hand)
        self.dealer = Autoplayer("Dealer", dealer_hand, dealer)

        self.player.draw()
        self.dealer.draw()
        self.player.draw()

        self.dealer_turn = False
        self.added_to_scoreboard = False

    def hit(self):
        '''
        Draws a card for the first player.
        :raises BlackjackException: if game came to a conclusion or if it's not player's turn
        '''
        if self.is_end():
            raise BlackjackException("Game ended.")

        if self.dealer_turn:
            raise BlackjackException("Not player\'s turn.")

        self.player.draw()

    def stand(self):
        '''
        Stands first player's turn and passes the turn to the dealer.
        :raises BlackjackException: if game came to a conclusion or if it's not player's turn, if player's already standing
        '''
        if self.is_end():
            raise BlackjackException("Game ended.")

        if self.dealer_turn:
            raise BlackjackException("You\'re already standing.")

        self.player.stand()
        self.dealer_turn = True

    def deal(self):
        '''
        Lets the dealer to take a decision to play.
        :raises BlackjackException: if game came to a conclusion or if it's not dealer's turn
        '''
        if self.is_end():
            raise BlackjackException("Game ended.")

        if not self.dealer_turn:
            raise BlackjackException("Not dealer\'s turn.")

        move = self.dealer.proceed()
        return move

    def is_end(self):
        '''
        Checks if the game came to a conclusion.
        :return: True - game reached a conclusion, False - otherwise
        '''
        if self.player.is_loser():
            if not self.added_to_scoreboard:
                self.dealer_wins += 1
            self.added_to_scoreboard = True
            return True

        if self.player.is_standing() and self.dealer.is_loser():
            if not self.added_to_scoreboard:
                self.player_wins += 1
            self.added_to_scoreboard = True
            return True

        if self.player.is_standing() and self.dealer.is_standing():
            if not self.added_to_scoreboard:
                if self.player.hand.sum() > self.dealer.hand.sum():
                    self.player_wins += 1
                else:
                    self.dealer_wins += 1
            self.added_to_scoreboard = True
            return True

        return False
Esempio n. 23
0
class GamePlay:
    def __init__(self):
        self.__screen = pygame.display.set_mode((1000, 700))
        self.__vaccines_background = VaccineBackground()
        self.__player = Player()
        self.__heart = Heart()
        self.__vaccine = Vaccine()
        self.__handle_crocodile_human = HandleCrocodileToHuman()
        self.__virus_manager = VirusManager()
        self.__collision = Collisions()
        self.__sound = Sound()

    def playing(self, start):
        gameover = start
        self.__pontuation = Pontuation()
        self.__independent_heart = IndependentHeart()
        self.__independent_vaccine = IndependentVaccine()

        while gameover:
            current_time = time.time()
            self.__draw_background()

            hit_virus = self.__collision.with_virus.did_virus_collide_with_player(
                self.__player, self.__virus_manager.virus)
            hit_crocodile = self.__collision.with_crocodile.did_player_collide_with_crocodile(
                self.__player, self.__handle_crocodile_human.crocodile)
            player_is_invencible = self.__player.invencible
            gameover = self.__action_after_hit_crocodile(
                hit_crocodile, player_is_invencible)
            gameover = gameover and self.__action_after_hit_virus_and_player_not_invencible(
                hit_virus, player_is_invencible)

            self.__draw_managers()
            gameover = gameover and self.__player.move()
            self.__player.draw(self.__screen)
            self.__draw_collectables()

            hit_heart = self.__collision.with_heart.did_heart_collide_with_player(
                self.__player, self.__independent_heart)
            self.__action_after_hit_heart(hit_heart)

            hit_vaccine = self.__collision.with_vaccine.did_vaccine_collide_with_player(
                self.__player, self.__independent_vaccine)
            self.__action_after_hit_vacine(hit_vaccine)

            self.__handle_crocodile_human.draw(self.__screen)
            self.__pontuation.draw(self.__screen)

            pygame.display.update()

            if (gameover == False):
                return self.__pontuation.get_pontuation(current_time)

    def __action_after_hit_crocodile(self, hit_crocodile,
                                     player_is_invencible):
        if not self.__handle_crocodile_human.is_human:
            if hit_crocodile and self.__vaccine.zero_vaccine_left():
                if not player_is_invencible:
                    self.__heart.lost_life()
                    if self.__heart.zero_lives_left():
                        return False
                    else:
                        self.__player.is_invencible()
                        self.__sound.lost_life_play()
            elif hit_crocodile:
                self.__handle_crocodile_human.hit_crocodile_with_vaccine()
                self.__vaccine.spend_vaccine()
                self.__pontuation.add_point()
        return True

    def __action_after_hit_virus_and_player_not_invencible(
            self, hit_virus, player_is_invencible):
        current_time = time.time()
        if hit_virus and not player_is_invencible:
            self.__heart.lost_life()
            if self.__heart.zero_lives_left():
                return False
            else:
                self.__sound.lost_life_play()
                self.__player.is_invencible()
        return True

    def __action_after_hit_vacine(self, hit_vaccine):
        if hit_vaccine:
            self.__independent_vaccine.colided()
            self.__vaccine.got_vaccine()
            self.__sound.vaccine_heart_play()

    def __action_after_hit_heart(self, hit_heart):
        if hit_heart:
            self.__independent_heart.colided()
            self.__heart.win_life()
            self.__sound.vaccine_heart_play()

    def __draw_collectables(self):
        self.__heart.draw(self.__screen)
        self.__vaccine.draw(self.__screen)
        self.__independent_heart.draw(self.__screen)
        self.__independent_vaccine.draw(self.__screen)

    def __draw_managers(self):
        self.__virus_manager.draw(self.__screen)

    def __draw_background(self):
        self.__vaccines_background.draw(self.__screen)
Esempio n. 24
0
class World(DirectObject, FSM):
    def __init__(self):
        FSM.__init__(self, "FSM-World")
        helper.hide_cursor()

        self.player = Player(base.cTrav)
        self.player.startPlayer()
        self.player.pausePlayer()
        self.player.hide()

        self.points = 0
        self.water = 100

        self.levelLoaded = False

        self.hud = HUD()

        def createFadeableImage(img, tsName, big=False):
            cm = CardMaker("FadableCard")
            cm.setFrame(-1, 1, -1, 1)
            image = NodePath(cm.generate())
            image.setTransparency(TransparencyAttrib.MAlpha)
            imageTex = loader.loadTexture(img)
            imageTs = TextureStage(tsName)
            imageTs.setMode(TextureStage.MReplace)
            image.setTexture(imageTs, imageTex)
            image.reparentTo(render2d)
            if big:
                image.setScale(0.75)
            else:
                image.setScale(0.5)
            image.setPos(0, 0, 0.25)
            image.hide()
            return image

        self.tutorial1 = createFadeableImage("gui/tutorial3.png", "ts-tut3")
        self.tutorialInterval = Sequence(
            Func(self.tutorial1.show),
            Func(self.hud.showStory),
            Func(self.hud.setStory, _("Use spacebar to plant seeds.")),
            self.tutorial1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(3.0),
            self.tutorial1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tutorial1.hide),
            Func(self.hud.hideStory),
            name="Planting Tutorial Sequence")

        self.intro1 = createFadeableImage("gui/intro1.png", "ts-intro1", True)
        self.intro2 = createFadeableImage("gui/intro2.png", "ts-intro2", True)
        self.intro3 = createFadeableImage("gui/intro3.png", "ts-intro3", True)
        self.tut1 = createFadeableImage("gui/tutorial1.png", "ts-tut1", True)
        self.tut2 = createFadeableImage("gui/tutorial2.png", "ts-tut2", True)
        self.introSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.intro1.show),
            Func(self.hud.setStory, _("Fire spirits set the forest alight,\nburning most of the trees and plants...")),
            self.intro1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro1.hide),
            Func(self.intro2.show),
            Func(self.hud.setStory, _("Soon though rain came\nand estinguished the raging fires...")),
            self.intro2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro2.hide),
            Func(self.intro3.show),
            Func(self.hud.setStory, _("A devastating aftermath, it's now up to you\nto help the forest regrow!")),
            self.intro3.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro3.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro3.hide),
            Func(self.tut1.show),
            Func(self.hud.setStory, _("Use W, A, S, D and the mouse to control the character.")),
            self.tut1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.tut1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tut1.hide),
            Func(self.tut2.show),
            Func(self.hud.setStory, _("Press Home to center the camera behind the player.")),
            self.tut2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(6.0),
            self.tut2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tut2.hide),
            Func(self.hud.hideStory),
            Func(self.demand, "Main"),
            name="Intro Sequence",)

        self.outro1 = createFadeableImage("gui/outro1.png", "ts-outro1", True)
        self.outro2 = createFadeableImage("gui/outro2.png", "ts-outro2", True)
        self.outro3 = createFadeableImage("gui/gameOver1.png", "ts-outro3", True)
        self.outroSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.outro1.show),
            Func(self.hud.setStory, _("Well done little droplets, you have my greatest gratitude.")),
            self.outro1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.outro1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro1.hide),
            Func(self.outro2.show),
            Func(self.hud.setStory, _("But... now it's again time to go for you.")),
            #Func(self.player.hide),
            self.outro2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.outro2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro2.hide),
            Func(self.outro3.show),
            Func(self.setEndingStoryText),
            self.outro3.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(10.0),
            self.outro3.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro3.hide),
            Func(self.hud.hideStory),
            Func(base.messenger.send, "GameOver"),
            name="Outro Sequence",)


        self.gameOver1 = createFadeableImage("gui/gameOver1.png", "ts-gameOver1", True)
        self.gameOverSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.outro1.show),
            Func(self.hud.setStory, _("You did your best and now you're one with the nature.")),
            self.gameOver1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.gameOver1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.gameOver1.hide),
            Func(self.hud.hideStory),
            Func(base.messenger.send, "GameOver"),
            name="Game Over Sequence",)

        # collision events
        self.acceptOnce("CharacterCollisions-in-tutorial1", self.showTutorial)
        self.acceptOnce("CharacterCollisions-in-finish", self.finishGame)
        self.accept("CharacterCollisions-in-PlantGroundCollider", self.enablePlanting)
        self.accept("CharacterCollisions-out-PlantGroundCollider", self.disablePlanting)
        self.accept("CharacterCollisions-in", self.checkCollisions)

        # Speeking with other Droplets
        self.accept("CharacterCollisions-in-Speek_AlmostDone", self.showText, extraArgs=[_("You almost reached the end")])
        self.accept("CharacterCollisions-out-Speek_AlmostDone", self.hideText)
        self.accept("CharacterCollisions-in-Speek_Hi", self.showText, extraArgs=[_("Hi!")])
        self.accept("CharacterCollisions-out-Speek_Hi", self.hideText)
        self.accept("CharacterCollisions-in-Speek_NoSeeds", self.theFriendlyDroplet)
        self.accept("CharacterCollisions-out-Speek_NoSeeds", self.hideText)
        self.accept("CharacterCollisions-in-Speek_PlantHere", self.showText, extraArgs=[_("Go on, plant a seed here!")])
        self.accept("CharacterCollisions-out-Speek_PlantHere", self.hideText)
        self.accept("CharacterCollisions-in-Speek_GoAway", self.goAway1)
        self.accept("CharacterCollisions-out-Speek_GoAway", self.hideText)
        self.accept("CharacterCollisions-in-Speek_SoTired", self.showText, extraArgs=[_("I'm tired, I planted to many seeds.")])
        self.accept("CharacterCollisions-out-Speek_SoTired", self.hideText)
        self.accept("CharacterCollisions-in-Speek_Fungies", self.showText, extraArgs=[_("Fungi 1: I hope such a fire never comes again\nFungi 2: Me too\nFungi 3: Do you smell the smoke o.O")])
        self.accept("CharacterCollisions-out-Speek_Fungies", self.hideText)
        self.accept("CharacterCollisions-in-Speek_MysteriousVoice", self.showText, extraArgs=[_("Voice from above: Hey you there, little droplet, it's me, the creator.\nYou: are you god?\nVoice from above: No, just the developer :P...")])
        self.accept("CharacterCollisions-out-Speek_MysteriousVoice", self.hideText)
        self.accept("CharacterCollisions-in-Speek_LonelyRock", self.findTheLonlyRock)
        self.accept("CharacterCollisions-out-Speek_LonelyRock", self.hideText)

        self.accept("Bridge1_Built", self.changeSpeaker1)

        # other events
        self.accept("player-plant_seed", self.doPlantSeed)
        self.accept("f1", self.showTutorial, extraArgs=[None])
        self.accept("addPoints", self.addPoints)
        self.accept("drawPlayerWater", self.drawPlayerWater)

        self.accept("LevelLoaded", self.start)
        self.level = Level(self.player)

    def start(self):
        self.levelLoaded = True
        #self.request("Main")
        self.request("Intro")

    def stop(self):
        """Stop all game components and ignores all events"""
        startPoint = self.level.getStartPoint()
        if startPoint is not None:
            self.player.setStartPos(startPoint.getPos())
            self.player.setStartHpr(startPoint.getHpr())
        helper.show_cursor()
        self.ignoreAll()
        self.player.stopPlayer()
        self.level.stop()
        del self.level
        self.tutorialInterval.finish()
        self.outroSequence.finish()
        self.tutorial1.removeNode()
        self.intro1.removeNode()
        self.intro2.removeNode()
        self.intro3.removeNode()
        self.outro1.removeNode()
        self.outro2.removeNode()
        self.outro3.removeNode()
        self.tut1.removeNode()
        self.tut2.removeNode()
        self.gameOver1.removeNode()
        self.hud.hideSpeekText()
        self.hud.cleanup()

    def finishGame(self, args):
        self.request("Outro")

    def requestEscape(self):
        if not self.levelLoaded:
            return False
        if self.state == "Intro":
            self.request("Main")
            return False
        else:
            return True

    def showTutorial(self, args):
        if not self.tutorialInterval.isPlaying():
            self.tutorialInterval.start()

    def showText(self, text, args):
        np = args.getIntoNodePath()
        self.hud.showSpeekText(text, np.getPos())

    def hideText(self, args):
        self.hud.hideSpeekText()

    def goAway1(self, args):
        self.showText(_("I'm just standing here, go away..."), args)
        self.ignore("CharacterCollisions-in-Speek_GoAway")
        self.accept("CharacterCollisions-in-Speek_GoAway", self.goAway2)

    def goAway2(self, args):
        self.showText(_("Go away, please..."), args)
        self.ignore("CharacterCollisions-in-Speek_GoAway")
        self.accept("CharacterCollisions-in-Speek_GoAway", self.goAway3)

    def goAway3(self, args):
        self.showText(_("Take some of my water but now go away, please..."), args)
        self.water += 20
        self.points += 10
        self.hud.setWater(self.water)
        self.hud.setPoints(self.points)
        newScale = self.water/100.0
        self.player.setScale(newScale)
        self.ignore("CharacterCollisions-in-Speek_GoAway")
        self.accept("CharacterCollisions-in-Speek_GoAway", self.goAway4)

    def goAway4(self, args):
        self.showText(_("..."), args)

    def findTheLonlyRock(self, args):
        self.points += 50
        self.hud.setPoints(self.points)
        self.showText(_("Lonely Rock: No one ever talks to me ;(\nYou: Poor little rock *pat pat*"), args)
        self.accept("CharacterCollisions-in-Speek_LonelyRock", self.showText, extraArgs=[_("Lonely Rock: No one ever talks to me ;(\nYou: Poor little rock *pat pat*")])

    def theFriendlyDroplet(self, args):
        self.showText(_("Up here are no seeds, but take some of this water!"), args)
        self.water += 10
        self.points += 10
        self.hud.setWater(self.water)
        self.hud.setPoints(self.points)
        newScale = self.water/100.0
        self.player.setScale(newScale)
        self.accept("CharacterCollisions-in-Speek_NoSeeds", self.showText, extraArgs=[_("Up here are no seeds...")])

    def changeSpeaker1(self):
        self.ignore("CharacterCollisions-in-Speek_PlantHere")
        self.accept("CharacterCollisions-in-Speek_PlantHere", self.showText, extraArgs=[_("Awesome!")])

    def checkCollisions(self, args):
        if "seedSphere" in args.getIntoNode().getName():
            self.doPickupSeed(args)

    def enablePlanting(self, args):
        self.currentPlantingGround = args
        self.player.enablePlanting(True)
        self.hud.showCanPlant()

    def disablePlanting(self, args):
        self.player.enablePlanting(False)
        self.hud.hideCanPlant()

    def doPickupSeed(self, args):
        self.player.doPickupSeed(args)
        self.level.doPickupSeed(args)

    def doPlantSeed(self):
        self.level.doPlantSeed(self.currentPlantingGround)

    def addPoints(self, points):
        self.points += points
        self.hud.setPoints(self.points)

    def drawPlayerWater(self, amount):
        self.water -= amount
        self.hud.setWater(self.water)
        newScale = self.water/100.0
        if self.water == 0:
            self.player.hide()
            self.request("GameOver")
            return
        self.player.setScale(newScale)

    def setEndingStoryText(self):
        self.hud.setStory(_("You got %d soul points") % self.points)

    def enterMain(self):
        """Main state of the world."""
        print _("Enter World")
        self.level.show()
        self.player.show()
        self.hud.show()
        self.player.resumePlayer()
        startPoint = self.level.getStartPoint()
        if startPoint is not None:
            self.player.setStartPos(startPoint.getPos())
            self.player.setStartHpr(startPoint.getHpr())
        helper.center_cursor()
        self.player.centerCamera()

    def exitMain(self):
        print _("Exit World")
        self.hud.hide()
        self.player.pausePlayer()

    def enterIntro(self):
        self.hud.hide()
        self.player.showCharFront()
        self.introSequence.start()

    def exitIntro(self):
        helper.center_cursor()
        #self.player.centerCamera()
        self.introSequence.finish()

    def enterOutro(self):
        startPoint = self.level.getEndPoint()
        if startPoint is not None:
            self.player.setStartPos(startPoint.getPos())
            self.player.setStartHpr(startPoint.getHpr())
        self.player.centerCamera()
        self.outroSequence.start()

    def exitOutro(self):
        self.outroSequence.finish()

    def enterGameOver(self):
        self.gameOverSequence.start()

    def exitGameOver(self):
        self.gameOverSequence.finish()
Esempio n. 25
0
"""
WSGI config for DJPajton2 project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application
from player.Player import Player
from skype.Skype import Skype

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DJPajton2.settings")

# Start player
vlc = Player.instance()

try:
    skype = Skype.instance()
    skype.start()
except Exception as e:
    print("Skype initialization failed! Use web panel :(")
    print("  {}".format(e))

print("Started!")
application = get_wsgi_application()
Esempio n. 26
0
class BottomPanel(QFrame):
    """
    底部控制面板组件,包含个内部按钮及其控制动作
    内部还包含有下列的组件
    1、播放器组件
    2、播放列表
    3、播放控制按钮、播放进度、歌曲信息等组件
    可在播放列表内切换歌曲
    注意:对于每首歌曲,都要标注是网络来源还是本地文件来源
    """
    def __init__(self):
        QFrame.__init__(self)
        self.__init_ui()
        self.__init_loader()
        self.__init_player()
        self.__song_index = 0

        self.start_drag_slider = False  # slider 条拖动状态标志,用于确定是否允许播放器更新
        self.stop_play = False  # 记录用户是否点击过停止按钮的操作,点击之后为 True,再次播放为 False
        self.play_model = ORDER_SEQUENCE  # type: int
        self.song_list = []  # type: list
        self.swap_play_model(self.play_model)

    def __init_ui(self):
        self.layout = QHBoxLayout()
        self.layout.setSpacing(10)
        self.layout.setContentsMargins(20, 5, 20, 5)
        self.setLayout(self.layout)

        self.btn_previous = IconButton()
        self.btn_previous.setProperty('class', 'highlight_button')
        self.btn_previous.white_icon = QIcon(QM_ICON_PATH + 'previous.svg')
        self.btn_previous.gray_icon = QIcon(QM_ICON_PATH + 'previous_gray.svg')
        self.btn_previous.to_white()
        self.btn_previous.setIconSize(QSize(35, 35))
        self.btn_previous.connect(SIGNAL('clicked()'),
                                  self.action_previous_song)
        self.layout.addWidget(self.btn_previous)

        self.btn_play = IconButton()
        self.btn_play.setProperty('class', 'highlight_button')
        self.btn_play.setProperty('play_button', 'play_button')
        self.btn_play.white_icon = QIcon(QM_ICON_PATH + 'play.svg')
        self.btn_play.gray_icon = QIcon(QM_ICON_PATH + 'pause.svg')
        self.btn_play.to_white()
        self.btn_play.setIconSize(QSize(40, 40))
        self.btn_play.connect(SIGNAL('clicked()'), self.action_play)
        self.layout.addWidget(self.btn_play)

        self.btn_next = IconButton()
        self.btn_next.setProperty('class', 'highlight_button')
        self.btn_next.white_icon = QIcon(QM_ICON_PATH + 'next.svg')
        self.btn_next.gray_icon = QIcon(QM_ICON_PATH + 'next_gray.svg')
        self.btn_next.to_white()
        self.btn_next.setIconSize(QSize(35, 35))
        self.btn_next.connect(SIGNAL('clicked()'), self.action_next_song)
        self.layout.addWidget(self.btn_next)

        self.btn_stop = IconButton()
        self.btn_stop.setProperty('class', 'highlight_button')
        self.btn_stop.white_icon = QIcon(QM_ICON_PATH + 'stop.svg')
        self.btn_stop.gray_icon = QIcon(QM_ICON_PATH + 'stop_gray.svg')
        self.btn_stop.to_white()
        self.btn_stop.setIconSize(QSize(35, 35))
        self.btn_stop.connect(SIGNAL('clicked()'), self.action_stop)
        self.layout.addWidget(self.btn_stop)

        song_info_layout = QHBoxLayout()
        song_info_layout.setSpacing(10)
        song_info_layout.setContentsMargins(30, 10, 30, 10)
        self.layout.addLayout(song_info_layout)

        self.song_image = QLabel()
        self.song_image.setProperty('class', 'song_image')
        song_info_layout.addWidget(self.song_image)

        slider_layout = QVBoxLayout()
        slider_layout.setSpacing(0)
        slider_layout.setContentsMargins(0, 0, 0, 0)
        song_info_layout.addLayout(slider_layout)

        song_name_layout = QHBoxLayout()
        song_name_layout.setSpacing(5)
        song_name_layout.setContentsMargins(10, 0, 10, 5)
        slider_layout.addLayout(song_name_layout)

        self.song_name = QLabel()
        self.song_name.setText(u"曲名")
        self.song_name.setProperty('class', 'song_name')
        song_name_layout.addWidget(self.song_name)

        self.song_singer = QLabel()
        self.song_singer.setText(u"歌手")
        self.song_singer.setProperty('class', 'song_singer')
        song_name_layout.addWidget(self.song_singer)
        song_name_layout.addStretch(1)

        self.play_time = QLabel()
        self.play_time.setProperty('class', 'play_time')
        self.play_time.setText(u"00:00:00")
        song_name_layout.addWidget(self.play_time)

        self.slider = QSlider()
        self.slider.setOrientation(Qt.Horizontal)
        self.slider.connect(SIGNAL('sliderPressed()'), self.slider_pressed)
        self.slider.connect(SIGNAL('sliderReleased()'), self.slider_released)
        slider_layout.addWidget(self.slider)

        self.layout.addStretch(1)

        self.btn_sequence = IconButton()
        self.btn_sequence.setProperty('class', 'highlight_button')
        self.btn_sequence.white_icon = QIcon(QM_ICON_PATH + 'sequence.svg')
        self.btn_sequence.gray_icon = QIcon(QM_ICON_PATH + 'sequence_gray.svg')
        self.btn_sequence.to_gray()
        self.btn_sequence.connect(SIGNAL('clicked()'),
                                  self.action_sequence_play)
        self.layout.addWidget(self.btn_sequence)

        self.btn_loop = IconButton()
        self.btn_loop.setProperty('class', 'highlight_button')
        self.btn_loop.white_icon = QIcon(QM_ICON_PATH + 'loop.svg')
        self.btn_loop.gray_icon = QIcon(QM_ICON_PATH + 'loop_gray.svg')
        self.btn_loop.to_gray()
        self.btn_loop.connect(SIGNAL('clicked()'), self.action_loop_play)
        self.layout.addWidget(self.btn_loop)

        self.btn_random = IconButton()
        self.btn_random.setProperty('class', 'highlight_button')
        self.btn_random.white_icon = QIcon(QM_ICON_PATH + 'random.svg')
        self.btn_random.gray_icon = QIcon(QM_ICON_PATH + 'random_gray.svg')
        self.btn_random.to_gray()
        self.btn_random.connect(SIGNAL('clicked()'), self.action_random_play)
        self.layout.addWidget(self.btn_random)

    def __init_loader(self):
        self.loader = AudioLoader()
        self.loader.connect(SIGNAL('caching()'), self.song_caching)
        self.loader.connect(SIGNAL('after_cache()'), self.after_cache)

    def __init_player(self):
        self.player = Player()
        self.player.connect(SIGNAL('before_play()'), self.player_before_play)
        self.player.connect(SIGNAL('playing()'), self.player_playing)
        self.player.connect(SIGNAL('pause()'), self.player_pause)
        self.player.connect(SIGNAL('proceed()'), self.player_proceed)
        self.player.connect(SIGNAL('play_finished()'), self.player_finished)
        self.player.connect(SIGNAL('stopped()'), self.player_stopped)

    def to_play_icon(self):
        """
        转换主播放按钮的图标为 播放
        """
        self.btn_play.to_white()

    def to_pause_icon(self):
        """
        转换主播放按钮的图标为 暂停
        """
        self.btn_play.to_gray()

    @property
    def song_count(self):
        """
        :return: 播放列表中待播放的歌曲数量
        """
        return len(self.song_list)

    @property
    def song_index(self):
        return self.__song_index

    @song_index.setter
    def song_index(self, value):
        if self.song_count < 1:
            return
        if value < 0 or value > self.song_count - 1:
            value = 0

        self.__song_index = value
        self.current_song = self.song_list[value]
        self.player.stop()
        self.loader.stop()
        self.load_song()

    @property
    def current_song(self):
        """
        :return: 取得当前正在播放的音乐信息
        """
        return self.loader.song_info

    @current_song.setter
    def current_song(self, value):
        """
        设置当前正在播放的音乐信息
        :param SongInfo value: 音乐信息对象
        """
        self.loader.song_info = value

    def swap_play_model(self, model):
        """
        切换播放模式,顺序播放、单曲循环、随机播放
        :param int model: 随机播放模式
        """
        self.play_model = model
        if self.play_model == ORDER_SEQUENCE:
            self.btn_sequence.to_white()
            self.btn_loop.to_gray()
            self.btn_random.to_gray()
        elif self.play_model == ORDER_LOOP:
            self.btn_sequence.to_gray()
            self.btn_loop.to_white()
            self.btn_random.to_gray()
        elif self.play_model == ORDER_RANDOM:
            self.btn_sequence.to_gray()
            self.btn_loop.to_gray()
            self.btn_random.to_white()

    def load_song(self):
        """
        装载歌曲
        """
        self.emit(SIGNAL('before_load()'))
        self.stop_play = False
        self.loader.start()

    def setup_song_info(self):
        """
        设置播放界面上的歌曲信息
        """
        pixel_map = QPixmap()
        pixel_map.loadFromData(self.loader.image_data)
        pixel_map = pixel_map.scaled(60, 60, Qt.KeepAspectRatio,
                                     Qt.SmoothTransformation)
        self.song_image.setPixmap(pixel_map)

        self.slider.setValue(0)
        self.slider.setMinimum(0)
        self.slider.setMaximum(self.current_song.interval)

        self.song_name.setText(self.current_song.name)
        self.song_singer.setText(self.current_song.singer_names)
        self.play_time.setText(seconds2time(self.player.duration))

    def song_caching(self):
        """
        歌曲缓存成功之后就开始播放
        """
        if self.loader.has_exception:
            txt = u'载入音频数据错误'
            message = ''
            for e in self.loader.exception_list:
                message += e.message + "\r\n"
            QMessageBox.warning(self, txt, txt + u'。错误消息:' + message,
                                QMessageBox.Ok)
            self.emit(SIGNAL('load_error()'))
            return

        self.player.audio_segment = self.loader.audio_segment
        if not self.stop_play and not self.player.is_playing:
            self.setup_song_info()
            self.player.start_position = self.slider.value()
            self.player.start()

    def after_cache(self):
        self.loader.stop()

    def play_song(self):
        """
        调用播放器方法,开始播放音乐
        """
        self.player.stop()
        self.player.start_position = self.slider.value()
        self.player.start()
        self.stop_play = False

    def stop_song(self):
        """
        调用播放器方法,停止播放,并还原播放点
        :return:
        """
        self.player.stop()
        self.slider.setValue(0)
        self.stop_play = True

    def slider_pressed(self):
        """
        在进度条上按下鼠标按钮,修改拖动标志,暂停进度更新
        """
        self.start_drag_slider = True

    def slider_released(self):
        """
        在进度条上松开鼠标按钮,修改播放点为选择的播放点
        从选择的播放点重新开始播放
        """
        self.play_song()
        self.start_drag_slider = False

    def action_play(self):
        """
        播放按钮点击执行的动作,这里分为两部分动作
        1、载入音乐
        2、播放音乐,播放音乐又分为播放和暂停两种情况
        """
        if self.player.is_playing:
            if self.player.is_paused:
                self.player.proceed()
            else:
                self.player.pause()
        else:
            self.play_song()

    def action_stop(self):
        """
        停止播放按钮执行的动作,执行两项动作
        1、停止播放
        2、还原播放点
        """
        self.stop_song()

    def action_previous_song(self):
        """
        从播放列表中读取上一首歌曲
        """
        if self.play_model == ORDER_SEQUENCE:
            self.song_index -= 1
        elif self.play_model == ORDER_LOOP:
            self.song_index = self.song_index
        elif self.play_model == ORDER_RANDOM:
            self.song_index = randint(0, self.song_count - 1)

    def action_next_song(self):
        """
        从播放列表中读取下一首歌曲
        :return:
        """
        if self.play_model == ORDER_SEQUENCE:
            self.song_index += 1
        elif self.play_model == ORDER_LOOP:
            self.song_index = self.song_index
        elif self.play_model == ORDER_RANDOM:
            self.song_index = randint(0, self.song_count - 1)

    def action_sequence_play(self):
        """
        顺序播放动作,修改播放模式参数
        """
        self.play_model = ORDER_SEQUENCE
        self.swap_play_model(self.play_model)

    def action_loop_play(self):
        """
        单曲循环播放,修改播放模式参数
        """
        self.play_model = ORDER_LOOP
        self.swap_play_model(self.play_model)

    def action_random_play(self):
        """
        随机播放,修改播放模式参数
        """
        self.play_model = ORDER_RANDOM
        self.swap_play_model(self.play_model)

    def player_before_play(self):
        """
        当播放器进入播放状态时触发的消息
        这里是修改播放按钮为 暂停 图标
        """
        self.to_pause_icon()

    def player_playing(self):
        """
        播放进行中会不断触发的消息
        主要用来修改播放时间,和播放进度
        """
        if not self.start_drag_slider and self.player.is_playing:
            self.slider.setValue(self.player.current_time)
            self.play_time.setText(seconds2time(self.player.current_time))

    def player_pause(self):
        """
        当播放器进入暂定状态时触发的消息
        这里是修改播放按钮为 播放 图标
        """
        self.to_play_icon()

    def player_proceed(self):
        """
        当播放器恢复播放状态时触发的消息
        这里是修改播放按钮为 暂停 图标
        """
        self.to_pause_icon()

    def player_finished(self):
        """
        当播放结束触发的消息
        这里是修改播放按钮为 播放 图标
        继续播放下一首
        """
        self.to_play_icon()
        self.action_next_song()

    def player_stopped(self):
        """
        手工停止播放触发的消息
        """
        self.to_play_icon()
Esempio n. 27
0
    def __init__(self):
        FSM.__init__(self, "FSM-World")
        helper.hide_cursor()

        self.player = Player(base.cTrav)
        self.player.startPlayer()
        self.player.pausePlayer()
        self.player.hide()

        self.points = 0
        self.water = 100

        self.levelLoaded = False

        self.hud = HUD()

        def createFadeableImage(img, tsName, big=False):
            cm = CardMaker("FadableCard")
            cm.setFrame(-1, 1, -1, 1)
            image = NodePath(cm.generate())
            image.setTransparency(TransparencyAttrib.MAlpha)
            imageTex = loader.loadTexture(img)
            imageTs = TextureStage(tsName)
            imageTs.setMode(TextureStage.MReplace)
            image.setTexture(imageTs, imageTex)
            image.reparentTo(render2d)
            if big:
                image.setScale(0.75)
            else:
                image.setScale(0.5)
            image.setPos(0, 0, 0.25)
            image.hide()
            return image

        self.tutorial1 = createFadeableImage("gui/tutorial3.png", "ts-tut3")
        self.tutorialInterval = Sequence(
            Func(self.tutorial1.show),
            Func(self.hud.showStory),
            Func(self.hud.setStory, _("Use spacebar to plant seeds.")),
            self.tutorial1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(3.0),
            self.tutorial1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tutorial1.hide),
            Func(self.hud.hideStory),
            name="Planting Tutorial Sequence")

        self.intro1 = createFadeableImage("gui/intro1.png", "ts-intro1", True)
        self.intro2 = createFadeableImage("gui/intro2.png", "ts-intro2", True)
        self.intro3 = createFadeableImage("gui/intro3.png", "ts-intro3", True)
        self.tut1 = createFadeableImage("gui/tutorial1.png", "ts-tut1", True)
        self.tut2 = createFadeableImage("gui/tutorial2.png", "ts-tut2", True)
        self.introSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.intro1.show),
            Func(self.hud.setStory, _("Fire spirits set the forest alight,\nburning most of the trees and plants...")),
            self.intro1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro1.hide),
            Func(self.intro2.show),
            Func(self.hud.setStory, _("Soon though rain came\nand estinguished the raging fires...")),
            self.intro2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro2.hide),
            Func(self.intro3.show),
            Func(self.hud.setStory, _("A devastating aftermath, it's now up to you\nto help the forest regrow!")),
            self.intro3.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.intro3.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.intro3.hide),
            Func(self.tut1.show),
            Func(self.hud.setStory, _("Use W, A, S, D and the mouse to control the character.")),
            self.tut1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(8.0),
            self.tut1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tut1.hide),
            Func(self.tut2.show),
            Func(self.hud.setStory, _("Press Home to center the camera behind the player.")),
            self.tut2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(6.0),
            self.tut2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.tut2.hide),
            Func(self.hud.hideStory),
            Func(self.demand, "Main"),
            name="Intro Sequence",)

        self.outro1 = createFadeableImage("gui/outro1.png", "ts-outro1", True)
        self.outro2 = createFadeableImage("gui/outro2.png", "ts-outro2", True)
        self.outro3 = createFadeableImage("gui/gameOver1.png", "ts-outro3", True)
        self.outroSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.outro1.show),
            Func(self.hud.setStory, _("Well done little droplets, you have my greatest gratitude.")),
            self.outro1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.outro1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro1.hide),
            Func(self.outro2.show),
            Func(self.hud.setStory, _("But... now it's again time to go for you.")),
            #Func(self.player.hide),
            self.outro2.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.outro2.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro2.hide),
            Func(self.outro3.show),
            Func(self.setEndingStoryText),
            self.outro3.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(10.0),
            self.outro3.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.outro3.hide),
            Func(self.hud.hideStory),
            Func(base.messenger.send, "GameOver"),
            name="Outro Sequence",)


        self.gameOver1 = createFadeableImage("gui/gameOver1.png", "ts-gameOver1", True)
        self.gameOverSequence = Sequence(
            Wait(1.0),
            Func(self.hud.showStory),
            Func(self.outro1.show),
            Func(self.hud.setStory, _("You did your best and now you're one with the nature.")),
            self.gameOver1.colorScaleInterval(
                1.5,
                (0,0,0,1),
                (0,0,0,0)),
            Wait(5.0),
            self.gameOver1.colorScaleInterval(
                1.5,
                (0,0,0,0),
                (0,0,0,1)),
            Func(self.gameOver1.hide),
            Func(self.hud.hideStory),
            Func(base.messenger.send, "GameOver"),
            name="Game Over Sequence",)

        # collision events
        self.acceptOnce("CharacterCollisions-in-tutorial1", self.showTutorial)
        self.acceptOnce("CharacterCollisions-in-finish", self.finishGame)
        self.accept("CharacterCollisions-in-PlantGroundCollider", self.enablePlanting)
        self.accept("CharacterCollisions-out-PlantGroundCollider", self.disablePlanting)
        self.accept("CharacterCollisions-in", self.checkCollisions)

        # Speeking with other Droplets
        self.accept("CharacterCollisions-in-Speek_AlmostDone", self.showText, extraArgs=[_("You almost reached the end")])
        self.accept("CharacterCollisions-out-Speek_AlmostDone", self.hideText)
        self.accept("CharacterCollisions-in-Speek_Hi", self.showText, extraArgs=[_("Hi!")])
        self.accept("CharacterCollisions-out-Speek_Hi", self.hideText)
        self.accept("CharacterCollisions-in-Speek_NoSeeds", self.theFriendlyDroplet)
        self.accept("CharacterCollisions-out-Speek_NoSeeds", self.hideText)
        self.accept("CharacterCollisions-in-Speek_PlantHere", self.showText, extraArgs=[_("Go on, plant a seed here!")])
        self.accept("CharacterCollisions-out-Speek_PlantHere", self.hideText)
        self.accept("CharacterCollisions-in-Speek_GoAway", self.goAway1)
        self.accept("CharacterCollisions-out-Speek_GoAway", self.hideText)
        self.accept("CharacterCollisions-in-Speek_SoTired", self.showText, extraArgs=[_("I'm tired, I planted to many seeds.")])
        self.accept("CharacterCollisions-out-Speek_SoTired", self.hideText)
        self.accept("CharacterCollisions-in-Speek_Fungies", self.showText, extraArgs=[_("Fungi 1: I hope such a fire never comes again\nFungi 2: Me too\nFungi 3: Do you smell the smoke o.O")])
        self.accept("CharacterCollisions-out-Speek_Fungies", self.hideText)
        self.accept("CharacterCollisions-in-Speek_MysteriousVoice", self.showText, extraArgs=[_("Voice from above: Hey you there, little droplet, it's me, the creator.\nYou: are you god?\nVoice from above: No, just the developer :P...")])
        self.accept("CharacterCollisions-out-Speek_MysteriousVoice", self.hideText)
        self.accept("CharacterCollisions-in-Speek_LonelyRock", self.findTheLonlyRock)
        self.accept("CharacterCollisions-out-Speek_LonelyRock", self.hideText)

        self.accept("Bridge1_Built", self.changeSpeaker1)

        # other events
        self.accept("player-plant_seed", self.doPlantSeed)
        self.accept("f1", self.showTutorial, extraArgs=[None])
        self.accept("addPoints", self.addPoints)
        self.accept("drawPlayerWater", self.drawPlayerWater)

        self.accept("LevelLoaded", self.start)
        self.level = Level(self.player)
Esempio n. 28
0
def main():
    def quit(self):
        engine.running = False

    engine = league.Engine("Midnight Riders")
    league.Settings.height = 768
    league.Settings.width = 768
    engine.init_pygame()
    mixer.music.load('./ogg_files/boss.ogg')
    mixer.music.play(-1)

    # Our tilesheet is 16x16 pixels
    league.Settings.tile_size = 16
    # Assign tilesheet
    tilesheet = league.Spritesheet('./TilesetGraveyard_16.png',
                                   league.Settings.tile_size, 12)
    # Set tilemaps for blank background and main scene
    scene = league.Tilemap('./finalScene.lvl', tilesheet, 16, 2)
    scene_size = (scene.wide * league.Settings.tile_size,
                  scene.high * league.Settings.tile_size)
    backdrop = league.Tilemap('./ourBackground.lvl', tilesheet, 16, 1)
    # Add to drawables that are passable and impassable

    enemyMap = []
    with open('finalScene.lvl') as f:
        next(f)
        next(f)
        for line in f:
            row = f.readline()
            row = row.strip()
            enemyMap.append([int(i) for i in row.split(',')])

    engine.drawables.add(scene.passable.sprites())
    engine.drawables.add(scene.impassable.sprites())
    engine.drawables.add(backdrop.passable.sprites())

    # Create player & enemy
    player = Player(2, 350, 350)
    enemy1 = Enemy(2, 80, 170)
    enemy2 = Enemy(2, 650, 200)
    enemy3 = Enemy(2, 55, 550)
    enemy4 = Enemy(2, 450, 650)
    enemy5 = Enemy(2, 375, 125)
    dark_knight = Boss(2, 300, 300)
    enemy_list = [enemy1, enemy2, enemy3, enemy4, enemy5]
    character_list = [enemy1, enemy2, enemy3, enemy4, enemy5, player]

    enemyController = EnemyController(enemyMap, enemy_list, player)
    enemyController.findPath

    def engine_add(characters):
        for obj in characters:
            # Add impassable blocks
            obj.blocks.add(scene.impassable)
            obj.blocks.add(scene.impassable.sprites())
            # Set scene size and boundaries
            obj.worldSize = scene_size
            # Load image
            obj.rect = obj.image.get_rect()
            # Add to drawable and updateable lists
            engine.objects.append(obj)
            engine.drawables.add(obj)

    engine_add(character_list)

    # Set locations of characters
    player.rect.x = 350
    player.rect.y = 350

    enemy1.rect.x = 200
    enemy1.rect.y = 200

    enemy2.rect.x = 650
    enemy2.rect.y = 200

    enemy3.rect.x = 55
    enemy3.rect.y = 550

    enemy4.rect.x = 450
    enemy4.rect.y = 650

    # Key event functions for player
    engine.key_events[pygame.K_a] = player.moveLeft
    engine.events[pygame.USEREVENT + evCnt()] = player.moveLeft
    engine.key_events[pygame.K_d] = player.moveRight
    engine.events[pygame.USEREVENT + evCnt()] = player.moveRight
    engine.key_events[pygame.K_w] = player.moveUp
    engine.events[pygame.USEREVENT + evCnt()] = player.moveUp
    engine.key_events[pygame.K_s] = player.moveDown
    engine.events[pygame.USEREVENT + evCnt()] = player.moveDown

    def add_collisions(collision_list, projectile):
        for obj in collision_list:
            engine.collisions[obj] = (projectile, obj.getHit)

    def projectile_add(projectile):
        projectile.blocks.add(scene.impassable)
        add_collisions(enemy_list, projectile)
        engine.drawables.add(projectile)
        engine.objects.append(projectile)

    def make_projectile_left(time):
        fire_ball = Projectile(player, "left")
        projectile_add(fire_ball)
        fire_ball.shoot_left(pygame.time.get_ticks())
        engine.events[pygame.USEREVENT + evCnt()] = fire_ball.shoot_left
        engine.collisions[dark_knight] = (fire_ball, dark_knight.getHit)
        make_boss()

    def make_projectile_right(time):
        fire_ball = Projectile(player, "right")
        projectile_add(fire_ball)
        fire_ball.shoot_left(pygame.time.get_ticks())
        engine.events[pygame.USEREVENT + evCnt()] = fire_ball.shoot_right
        engine.collisions[dark_knight] = (fire_ball, dark_knight.getHit)
        make_boss()

    def make_projectile_up(time):
        fire_ball = Projectile(player, "up")
        projectile_add(fire_ball)
        fire_ball.shoot_left(pygame.time.get_ticks())
        engine.events[pygame.USEREVENT + evCnt()] = fire_ball.shoot_up
        engine.collisions[dark_knight] = (fire_ball, dark_knight.getHit)
        make_boss()

    def make_projectile_down(time):
        fire_ball = Projectile(player, "down")
        projectile_add(fire_ball)
        fire_ball.shoot_left(pygame.time.get_ticks())
        engine.events[pygame.USEREVENT + evCnt()] = fire_ball.shoot_down
        engine.collisions[dark_knight] = (fire_ball, dark_knight.getHit)
        make_boss()

    def make_boss():
        if Enemy.num_zombies <= 0 and Boss.spawned is False:
            Boss.spawned = True
            dark_knight.rect.x = 300
            dark_knight.rect.y = 300
            dark_knight.blocks.add(scene.impassable)
            dark_knight.blocks.add(scene.impassable.sprites())
            engine.drawables.add(dark_knight)
            engine.objects.append(dark_knight)
            move_knight = pygame.USEREVENT + evCnt()
            pygame.time.set_timer(move_knight, 1000)
            # engine.events[move_knight] = dark_knight.move
            engine.events[move_knight] = dark_knight.move_random
            mixer.music.stop()
            mixer.music.load('./ogg_files/beach.ogg')
            mixer.music.play(-1)

    # Key event function for projectile and set timer
    engine.key_events[pygame.K_j] = make_projectile_left
    engine.key_events[pygame.K_i] = make_projectile_up
    engine.key_events[pygame.K_k] = make_projectile_down
    engine.key_events[pygame.K_l] = make_projectile_right

    path_enemy = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(path_enemy, 3000)
    engine.events[path_enemy] = enemyController.findPath

    move_enemy1 = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(move_enemy1, 500)
    engine.events[move_enemy1] = enemy1.move

    move_enemy2 = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(move_enemy2, 500)
    engine.events[move_enemy2] = enemy2.move

    move_enemy3 = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(move_enemy3, 500)
    engine.events[move_enemy3] = enemy3.move

    move_enemy4 = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(move_enemy4, 500)
    engine.events[move_enemy4] = enemy4.move

    move_enemy5 = pygame.USEREVENT + evCnt()
    pygame.time.set_timer(move_enemy5, 500)
    engine.events[move_enemy5] = enemy5.move

    # Quit function
    engine.events[pygame.QUIT] = quit
    engine.key_events[pygame.K_ESCAPE] = quit
    # Run the engine
    engine.run()
Esempio n. 29
0
# Чтение файла со списком NickName-ов игроков
with open('./data/proPlayers.json', 'r', encoding='utf-8') as file:
    dataJson = file.read()

data = json.loads(dataJson)

# Создание сета команд
teams = get_teams()

# Заполнение словаря данными для игроков
for player in data:
    if player['account_id'] in proPlayers:
        continue
    else:
        currPlayer = Player(player['account_id'], player['name'],
                            player['team_name'], int(player['team_id']))
        proPlayers[player['account_id']] = currPlayer

# Чтение имен всех файлов матчей
listOfMatchNames = []
for file in os.listdir('./data/matches'):
    filename = os.fsdecode(file)
    listOfMatchNames.append(filename[:-5])

# провод по всем файлам
for matchNumber in listOfMatchNames:
    with open('./data/matches/' + matchNumber + '.json', 'r',
              encoding='utf-8') as match:
        strData = match.read()
    currData = json.loads(strData)