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 __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 __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
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 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"
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"
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)) ])
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
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)
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 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()
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
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))
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
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()
def Next(request): Player.instance().nextSong() return HttpResponse()
def Stop(request): Player.instance().stop() return HttpResponse()
def GetLength(request): return HttpResponse(Player.instance().getLength())
def SetTime(request, time): time = int(time) Player.instance().setTime(time) return HttpResponse(Player.instance().getTime())
def GetTime(request): return HttpResponse(Player.instance().getTime())
def SetVolume(request, volume): volume = int(volume) Player.instance().setVolume(volume) return HttpResponse(Player.instance().getVolume())
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
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)
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()
""" 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()
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()
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 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()
# Чтение файла со списком 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)