Example #1
0
	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()
Example #2
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] ) )
Example #3
0
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)			
Example #4
0
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