def __init__(self, winDimensions, remoteGame): super().__init__() # Set state self.maxX = winDimensions[0]/2 self.minX = -self.maxX self.maxY = winDimensions[1]/2 self.minY = -self.maxY # Load Setting rm = ResourceManager.activeManager self._background = ParallaxBackground(\ rm.request("PlanetBackgroundSmall.jpg"), \ [rm.request("ParallaxStarsSmall.png")], [-300]) # Load Setting Music p = self._musicPlayer = pyglet.media.Player() p.queue(rm.request("ABeautifulMind.mp3", pyglet.media.load)) p.eos_action = 'loop' p.play() # Establish Remote Game Connection self.remoteGame = remoteGame # Initialize the Game self.initGame() self.beginWaiting()
def __init__( self ): self.bg = ParallaxBackground( "sprites/worlds/"+str(Game.level)+"/background-fore.png", "sprites/worlds/"+str(Game.level)+"/background-middle.png", "sprites/worlds/"+str(Game.level)+"/background-far.png", "sprites/worlds/"+str(Game.level)+"/background-back.png" ) self.platforms.append( Platform( [(Game.screen_width/2)-50, 200] ) )
class GameWorld(object): activeWorld = None def __init__(self, winDimensions, remoteGame): super().__init__() # Set state self.maxX = winDimensions[0]/2 self.minX = -self.maxX self.maxY = winDimensions[1]/2 self.minY = -self.maxY # Load Setting rm = ResourceManager.activeManager self._background = ParallaxBackground(\ rm.request("PlanetBackgroundSmall.jpg"), \ [rm.request("ParallaxStarsSmall.png")], [-300]) # Load Setting Music p = self._musicPlayer = pyglet.media.Player() p.queue(rm.request("ABeautifulMind.mp3", pyglet.media.load)) p.eos_action = 'loop' p.play() # Establish Remote Game Connection self.remoteGame = remoteGame # Initialize the Game self.initGame() self.beginWaiting() '''''''''''''''''''''''''''''''''''''''''''''''' def draw(self): if self._gameState == "PlayAgain?": self._endText.draw() self._endText2.draw() def update(self, dt): # Handle any events; ie. Loss of Connection, New Game, etc.. self.handleEvents() # Handle special state self.handleGameState() # Update background and health bar self._background.update(dt) self._player.getHB().update(dt) # Update All Entities self.remoteGame.update(dt) for localEnt in self._entities: localEnt.update(dt) if(self._gameState == "Playing"): self.remoteGame.sendEntity(localEnt) self.checkGameOver() '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # Handle Events, such as Disconnets, New Games, Etc.. def handleEvents(self): if(self.remoteGame.hasConnected()): self.beginNewGame() if(self.remoteGame.hasDisconnected()): self.endGame() self.beginWaiting() if(self.remoteGame.willPlayAgain() and self.willPlayAgain()): self.beginNewGame() if(self.isDefeated() or self.remoteGame.isDefeated()): self.endGame() self.askPlayAgain() def handleGameState(self): if(self._gameState == "PlayAgain?"): if(Keyboard.localKeyboard._releasedKeys[pyglet.window.key.Y]): self._gameState == "PlayAgain" self.remoteGame.sendEvent("PlayAgain") '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' def beginNewGame(self): # Set the ship position and remove bullets self._player.getShip().setTranslation2f(0, -200) # Set the Game State self._gameState = "Playing" def endGame(self): # Destroy All Local and Remote Entities self.remoteGame.removeEntities() for ent in self._entities: ent.removeFromWorld() # Remove the Player's HealthBar self._player.removeFromWorld() # Reinitialize the Game self.initGame() self._gameState = "Ended" def initGame(self): # Get Scene Graph sg = Renderer.getRenderer().getSceneGraph() # Create the Player at 0, -200 self._player = Player(Keyboard.localKeyboard, 1, t=sg.newTransform(t=vec(0, -200))) # Create Entities self._entities = [] self.addEntity(self._player.getShip()) # Create End-Text Display self._endText = None self._endText2 = None def beginWaiting(self): self._gameState = "Waiting" def askPlayAgain(self): # Set Game State self._gameState = "PlayAgain?" # Create PlayAgain Text if not self._endText: self._endText = pyglet.text.Label("Play Again - Y", font_name = "Times New Roman", font_size = 24, anchor_x='center', anchor_y='center', color=(255, 255, 255, 255)) self._endText2 = pyglet.text.Label("Exit - Esc", font_name = "Times New Roman", font_size = 24, y=-40, anchor_x='center', anchor_y='center', color=(255, 255, 255, 255)) def checkGameOver(self): if(self._player.getShip().explosionEnded()): self._gameState = "isDefeated" self.remoteGame.sendEvent("isDefeated") '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' def willPlayAgain(self): return self._gameState == "PlayAgain" def isDefeated(self): return self._gameState == "isDefeated" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' def addEntity(self, ent): CollisionWorld.activeWorld.addPrimitive(ent.getCollisionPrimitive()) self._entities.append(ent) def removeEntity(self, ent): CollisionWorld.activeWorld.removePrimitive(ent.getCollisionPrimitive()) self._entities.remove(ent)
class World: bg = None platforms = [] tinyworlds = [] enemies = [] last_tinyworld = 0 last_platform = 0 def __init__( self ): self.bg = ParallaxBackground( "sprites/worlds/"+str(Game.level)+"/background-fore.png", "sprites/worlds/"+str(Game.level)+"/background-middle.png", "sprites/worlds/"+str(Game.level)+"/background-far.png", "sprites/worlds/"+str(Game.level)+"/background-back.png" ) self.platforms.append( Platform( [(Game.screen_width/2)-50, 200] ) ) #self.tinyworlds.append( TinyWorld( [random.randint(100, 800), random.randint(300, 600)] ) ) def clearLevel( self ): for i in range(0, len(self.platforms)): self.platforms[i].kill( ) for i in range(0, len(self.tinyworlds)): self.tinyworlds[i].kill( ) for i in range(0, len(self.enemies)): self.enemies[i].kill( ) self.platforms = [] self.tinyworlds = [] self.enemies = [] self.last_tinyworld = 0 self.last_platform = 0 def clearBg( self ): for s in Game.sprites["background"]: s.kill( ) #for i in range(0, len(self.bg.layers)): # for t in range(0, len(self.bg.layers[i].tiles)): # self.bg.layers[i].tiles[t].kill( ) # self.bg.layers[i].tile.kill( ) self.bg.layers = [] self.bg = None def resetLevel( self ): self.clearLevel( ) self.platforms.append( Platform( [(Game.screen_width/2)-50, 200] ) ) #self.tinyworlds.append( TinyWorld( [random.randint(100, 800), random.randint(300, 600)] ) ) def update( self, player ): # update background self.bg.update( player ) # randomly add baddies randomiser = random.randint( 0, 1000 ) if randomiser <= 10: self.enemies.append( FloatyTurp( [Game.screen_width, random.randint(100, Game.screen_height - 100)] ) ) if randomiser > 10 and randomiser <= 15: self.enemies.append( BulletTurp( [Game.screen_width, random.randint(100, Game.screen_height - 100)] ) ) # Randomly add platforms and tiny worlds if player.pos[0] > Game.screen_width - Game.screen_move_x: if self.last_tinyworld == 0: if randomiser > 15 and randomiser <= 20: self.tinyworlds.append( TinyWorld( [random.randint(Game.screen_width, Game.screen_width * 2), random.randint(100, Game.screen_height - 100)] ) ) self.last_tinyworld = 100 else: self.last_tinyworld -= 1 if self.last_platform == 0: if randomiser > 20 and randomiser <= 30: self.platforms.append( Platform( [random.randint(Game.screen_width, Game.screen_width * 2), random.randint(100, Game.screen_height - 100)] ) ) self.last_platform = 100 else: self.last_platform -= 1 # move platforms for i in range(0, len(self.platforms)): if player.move_X < 0: if player.pos[0] < Game.screen_move_x: self.platforms[i].pos[0] -= player.move_X elif player.move_X > 0: if player.pos[0] > Game.screen_width - Game.screen_move_x: self.platforms[i].pos[0] -= player.move_X # move tiny worlds for i in range(0, len(self.tinyworlds)): if player.move_X < 0: if player.pos[0] < Game.screen_move_x: self.tinyworlds[i].pos[0] -= player.move_X elif player.move_X > 0: if player.pos[0] > Game.screen_width - Game.screen_move_x: self.tinyworlds[i].pos[0] -= player.move_X # move enemies for i in range(0, len(self.enemies)): if player.move_X < 0: if player.pos[0] < Game.screen_move_x: self.enemies[i].pos[0] -= player.move_X elif player.move_X > 0: if player.pos[0] > Game.screen_width - Game.screen_move_x: self.enemies[i].pos[0] -= player.move_X