Пример #1
0
	def __init__(self, server, color, levelPreset = "empty"):
		self.server = server

		self.butterflies = []

		self.screen = pygame.display.get_surface()

		self.backgroundImage, self.backgroundRect = loadPNG("background.png")

		self.buttonSound = pygame.mixer.Sound("resources/sound/button.wav")
		self.buttonSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.active = True

		if levelPreset == "empty":
			self.level = Map()
		else:
			self.level = Map(True)

		self.toolbar = GameToolbar()

		self.regis = Rabbit(1, "regis" , color, self.level.objectList, self.level.objectSpritesList)

		self.server.accept()
		self.server.send(b"connexion avec client : OK")
		msg = self.server.recieve()

		mapStr = self.level.getMapStr()

		#MAP STRING SEND
		self.server.send(struct.pack(str(len(mapStr)) + "s", mapStr))

		#SERVER RABBIT COLOR SEND
		self.server.send(struct.pack("iii", self.regis.color[0], self.regis.color[1], self.regis.color[2]))

		#CLIENT RABBIT COLOR RECIEVE
		clientCol = self.server.recieve()
		clientCol = struct.unpack("iii", clientCol)

		#CREATE CLIENT RABBIT
		self.john = Rabbit(2, "john" , clientCol, self.level.objectList, self.level.objectSpritesList, True)

		self.regis.appendRabbit(self.john)
		self.john.appendRabbit(self.regis)

	 	self.pauseMenu = PauseGameMenu()

		self.deltaCarrot = 0
		self.timeCarrot = random.randint(1, 4)

	# 	for l in range(0, 6):
	# 		while True:
	# 			randPos = random.randint(0, 16)
	# 			if not self.level.isInBlock(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26):
	# 				break

	# 		butterfly = Butterfly(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26, (255, 10, 100), self.level.objectList, self.level.objectSpritesList)
	# 		self.butterflies.append(butterfly)

	 	pygame.display.flip()
Пример #2
0
	def __init__(self, color):
		self.butterflies = []

		self.screen = pygame.display.get_surface()

		self.backgroundImage, self.backgroundRect = loadPNG("background.png")

		self.buttonSound = pygame.mixer.Sound("resources/sound/button.wav")
		self.buttonSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.active = True

		self.level = Map(True)

		self.toolbar = GameToolbar()

		self.client = Client('localhost')
		self.client.connect()
		self.client.recieve()
		self.client.send(b"connexion avec serveur : OK")

		#MAP STRING RECIEVE
		mapStr = self.client.recieve(4096)
		mapStr = struct.unpack(str(len(mapStr)) + "s", mapStr)[0]

		#LOAD MAP FROM STRING
		self.level.saveFromStr("tempClient", mapStr)
		self.level.load("tempClient")

		#CREATE CLIENT RABBIT
		self.regis = Rabbit(1, "regis" , color, self.level.objectList, self.level.objectSpritesList)

		#SERVER RABBIT COLOR RECIEVE
		serverCol = self.client.recieve()
		serverCol = struct.unpack("iii", serverCol)

		#CLIENT RABBIT COLOR SEND
		self.client.send(struct.pack("iii", self.regis.color[0], self.regis.color[1], self.regis.color[2]))

		#CREATE SERVER RABBIT
	 	self.john = Rabbit(2, "john" , serverCol, self.level.objectList, self.level.objectSpritesList, True)

		self.regis.appendRabbit(self.john)
	 	self.john.appendRabbit(self.regis)

	 	self.pauseMenu = PauseGameMenu()

	# 	for l in range(0, 6):
	# 		while True:
	# 			randPos = random.randint(0, 16)
	# 			if not self.level.isInBlock(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26):
	# 				break

	# 		butterfly = Butterfly(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26, (255, 10, 100), self.level.objectList, self.level.objectSpritesList)
	# 		self.butterflies.append(butterfly)

	 	pygame.display.flip()
Пример #3
0
	def __init__(self, color1, color2, levelPreset = "empty"):
		self.butterflies = []

		self.screen = pygame.display.get_surface()

		self.backgroundImage, self.backgroundRect = loadPNG("background.png")

		self.buttonSound = pygame.mixer.Sound("resources/sound/button.wav")
		self.buttonSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.active = True

		if levelPreset == "empty":
			self.level = Map()
		else:
			self.level = Map(True)

		self.toolbar = GameToolbar()

		self.regis = Rabbit(1, "regis", color1, self.level.objectList, self.level.objectSpritesList)

		self.john = Rabbit(2, "john", color2, self.level.objectList, self.level.objectSpritesList)

		self.john.appendRabbit(self.regis)
		self.regis.appendRabbit(self.john)

		self.pauseMenu = PauseGameMenu()

		self.deltaCarrot = 0
		self.timeCarrot = random.randint(1, 4)

		for l in range(0, 6):
			while True:
				randPos = random.randint(0, 16)
				if not self.level.isInBlock(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26):
					break

			butterfly = Butterfly(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26, (255, 10, 100), self.level.objectList, self.level.objectSpritesList)
			self.butterflies.append(butterfly)

		pygame.display.flip()
Пример #4
0
class MultiServerGame():
	pygame.mixer.pre_init(44100, -16, 2, 1024)
	pygame.mixer.init()

	def __init__(self, server, color, levelPreset = "empty"):
		self.server = server

		self.butterflies = []

		self.screen = pygame.display.get_surface()

		self.backgroundImage, self.backgroundRect = loadPNG("background.png")

		self.buttonSound = pygame.mixer.Sound("resources/sound/button.wav")
		self.buttonSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.active = True

		if levelPreset == "empty":
			self.level = Map()
		else:
			self.level = Map(True)

		self.toolbar = GameToolbar()

		self.regis = Rabbit(1, "regis" , color, self.level.objectList, self.level.objectSpritesList)

		self.server.accept()
		self.server.send(b"connexion avec client : OK")
		msg = self.server.recieve()

		mapStr = self.level.getMapStr()

		#MAP STRING SEND
		self.server.send(struct.pack(str(len(mapStr)) + "s", mapStr))

		#SERVER RABBIT COLOR SEND
		self.server.send(struct.pack("iii", self.regis.color[0], self.regis.color[1], self.regis.color[2]))

		#CLIENT RABBIT COLOR RECIEVE
		clientCol = self.server.recieve()
		clientCol = struct.unpack("iii", clientCol)

		#CREATE CLIENT RABBIT
		self.john = Rabbit(2, "john" , clientCol, self.level.objectList, self.level.objectSpritesList, True)

		self.regis.appendRabbit(self.john)
		self.john.appendRabbit(self.regis)

	 	self.pauseMenu = PauseGameMenu()

		self.deltaCarrot = 0
		self.timeCarrot = random.randint(1, 4)

	# 	for l in range(0, 6):
	# 		while True:
	# 			randPos = random.randint(0, 16)
	# 			if not self.level.isInBlock(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26):
	# 				break

	# 		butterfly = Butterfly(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26, (255, 10, 100), self.level.objectList, self.level.objectSpritesList)
	# 		self.butterflies.append(butterfly)

	 	pygame.display.flip()

	def update(self):
	 	key = pygame.key.get_pressed()

	 	if self.active:
	 		pygame.mouse.set_visible(0)

	 		for event in pygame.event.get():
	 			if event.type == QUIT or (key[K_F4] and key[K_LALT]):
	 				self.server.close()
	 				return False, self

				elif event.type == KEYDOWN:
					if event.key == K_UP:
						self.regis.jump()
					if event.key == K_LEFT:
						self.regis.moveLeftStart()
					if event.key == K_RIGHT:
						self.regis.moveRightStart()
					if event.key == K_KP0:
						self.regis.throwCarrot()

				elif event.type == KEYUP:
					if event.key == K_LEFT:
						self.regis.moveLeftStop()
					if event.key == K_RIGHT:
						self.regis.moveRightStop()

	# 			#IF A RABBIT IS TOUCHED
	# 			elif event.type == USEREVENT + 1:
	# 				print "touche"
	# 				if self.john.isTouched():
	# 					self.john.moveLeftStop()
	# 					self.john.moveRightStop()

	# 				elif self.regis.isTouched():
	# 					self.regis.moveLeftStop()
	# 					self.regis.moveRightStop()

	# 			elif event.type == USEREVENT + 2:
	# 				print "plus touche"

			self.screen.blit(self.backgroundImage, self.backgroundRect, self.backgroundRect)

			#SERVER RABBIT POSITION SEND
			self.server.send(struct.pack("ii", self.regis.rect.x, self.regis.rect.y))

			#CLIENT RABBIT POSITION RECIEVE
			johnPos = self.server.recieve()
			johnPos = struct.unpack("ii", johnPos)
			self.john.rect.x = johnPos[0]
			self.john.rect.y = johnPos[1]

			#LEVEL UPDATE
			self.level.update()

			#RABBITS UPDATE
			self.john.update()
			self.regis.update()

			#TOOLBAR UPDATE
			self.toolbar.update(self.john, self.regis)

			#BUTTERFLIES UPDATE
			for b in self.butterflies:
				b.update()

			#NEW CARROTS
			if(self.deltaCarrot == self.timeCarrot * 3600):
				self.level.addCarrot()
				self.deltaCarrot = 0
				self.timeCarrot = random.randint(1, 4)
			else:
				self.deltaCarrot += 1

	# 	else:
	# 		pygame.mouse.set_visible(1)

	# 		for event in pygame.event.get():
	# 			if event.type == QUIT or (key[K_F4] and key[K_LALT]):
	# 				return False, self

	# 			elif event.type == MOUSEBUTTONDOWN:
	# 				mse = pygame.mouse.get_pos()

	# 				if self.pauseMenu.buttons["resume"].onButton(mse):
	# 					self.buttonSound.play()
	# 					self.active = True

	# 				elif self.pauseMenu.buttons["loadlevel"].onButton(mse):
	# 					self.buttonSound.play()
	# 					print "okay"

	# 				elif self.pauseMenu.buttons["mainMenu"].onButton(mse):
	# 					self.buttonSound.play()
	# 					return True, MainMenu.MainMenu()


	# 			elif event.type == MOUSEMOTION:
	# 				mse = pygame.mouse.get_pos()

	# 				pygame.mouse.set_cursor(*pygame.cursors.arrow)

	# 				for button in self.pauseMenu.buttons.values():
	# 					if button.onButton(mse):
	# 						pygame.mouse.set_cursor(*pygame.cursors.tri_left)

	# 			elif event.type == KEYDOWN:
	# 				if event.key == K_ESCAPE:
	# 					self.active = True

	# 		self.pauseMenu.update()

		pygame.display.update()

		return True, self
Пример #5
0
class Game():
	pygame.mixer.pre_init(44100, -16, 2, 1024)
	pygame.mixer.init()

	def __init__(self, color1, color2, levelPreset = "empty"):
		self.butterflies = []

		self.screen = pygame.display.get_surface()

		self.backgroundImage, self.backgroundRect = loadPNG("background.png")

		self.buttonSound = pygame.mixer.Sound("resources/sound/button.wav")
		self.buttonSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.active = True

		if levelPreset == "empty":
			self.level = Map()
		else:
			self.level = Map(True)

		self.toolbar = GameToolbar()

		self.regis = Rabbit(1, "regis", color1, self.level.objectList, self.level.objectSpritesList)

		self.john = Rabbit(2, "john", color2, self.level.objectList, self.level.objectSpritesList)

		self.john.appendRabbit(self.regis)
		self.regis.appendRabbit(self.john)

		self.pauseMenu = PauseGameMenu()

		self.deltaCarrot = 0
		self.timeCarrot = random.randint(1, 4)

		for l in range(0, 6):
			while True:
				randPos = random.randint(0, 16)
				if not self.level.isInBlock(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26):
					break

			butterfly = Butterfly(self.level.objectList[randPos].getX() + 10, self.level.objectList[randPos].getY() - 26, (255, 10, 100), self.level.objectList, self.level.objectSpritesList)
			self.butterflies.append(butterfly)

		pygame.display.flip()

	def update(self):
		key = pygame.key.get_pressed()

		if self.active:
			pygame.mouse.set_visible(0)

			for event in pygame.event.get():
				if event.type == QUIT or (key[K_F4] and key[K_LALT]):
					return False, self

				elif event.type == MOUSEMOTION and (key[K_LSHIFT] or key[K_LCTRL]):
					mse = pygame.mouse.get_pos()
					if not any(obj.rect.collidepoint(mse) for obj in self.level.objectList):
						x = (int(mse[0]) / 50)*50
						y = (int(mse[1]) / 50)*50
						if key[K_LSHIFT]:
							self.level.addObject(x, y, "earth")
						else:
							self.level.addObject(x, y, "boing")

				elif event.type == MOUSEMOTION and key[K_LALT]:
					mse = pygame.mouse.get_pos()
					self.level.removeObjectFromPos(mse)

				elif event.type == KEYDOWN:
					#KEYS FOR JOHN
					if event.key == K_UP:
						self.john.jump()
					if event.key == K_LEFT:
						self.john.moveLeftStart()
					if event.key == K_RIGHT:
						self.john.moveRightStart()
					if event.key == K_KP0:
						self.john.throwCarrot()

					#KEYS FOR REGIS
					if event.key == K_w:
						self.regis.jump()
					if event.key == K_a:
						self.regis.moveLeftStart()
					if event.key == K_d:
						self.regis.moveRightStart()
					if event.key == K_e:
						self.regis.throwCarrot()

					if event.key == K_c:
						self.level.addCarrot()

					if event.key == K_ESCAPE:
						self.active = False
						self.john.moveLeftStop()
						self.john.moveRightStop()
						self.regis.moveLeftStop()
						self.regis.moveRightStop()

				elif event.type == KEYUP:
					if event.key == K_LEFT:
						self.john.moveLeftStop()
					if event.key == K_RIGHT:
						self.john.moveRightStop()
					if event.key == K_a:
						self.regis.moveLeftStop()
					if event.key == K_d:
						self.regis.moveRightStop()

				#IF A RABBIT IS TOUCHED
				elif event.type == USEREVENT + 1:
					print "touche"
					if self.john.isTouched():
						self.john.moveLeftStop()
						self.john.moveRightStop()

					elif self.regis.isTouched():
						self.regis.moveLeftStop()
						self.regis.moveRightStop()

				elif event.type == USEREVENT + 2:
					print "plus touche"

			self.screen.blit(self.backgroundImage, self.backgroundRect, self.backgroundRect)

			#LEVEL UPDATE
			self.level.update()

			#RABBITS UPDATE
			self.john.update()
			self.regis.update()

			#TOOLBAR UPDATE
			self.toolbar.update(self.john, self.regis)

			#BUTTERFLIES UPDATE
			for b in self.butterflies:
				b.update()

			#NEW CARROTS
			if(self.deltaCarrot == self.timeCarrot * 3600):
				self.level.addCarrot()
				self.deltaCarrot = 0
				self.timeCarrot = random.randint(1, 4)
			else:
				self.deltaCarrot += 1

		else:
			pygame.mouse.set_visible(1)

			for event in pygame.event.get():
				if event.type == QUIT or (key[K_F4] and key[K_LALT]):
					return False, self

				elif event.type == MOUSEBUTTONDOWN:
					mse = pygame.mouse.get_pos()

					if self.pauseMenu.buttons["resume"].onButton(mse):
						self.buttonSound.play()
						self.active = True

					elif self.pauseMenu.buttons["loadlevel"].onButton(mse):
						self.buttonSound.play()
						print "okay"

					elif self.pauseMenu.buttons["mainMenu"].onButton(mse):
						self.buttonSound.play()
						return True, MainMenu.MainMenu()


				elif event.type == MOUSEMOTION:
					mse = pygame.mouse.get_pos()

					pygame.mouse.set_cursor(*pygame.cursors.arrow)

					for button in self.pauseMenu.buttons.values():
						if button.onButton(mse):
							pygame.mouse.set_cursor(*pygame.cursors.tri_left)

				elif event.type == KEYDOWN:
					if event.key == K_ESCAPE:
						self.active = True

			self.pauseMenu.update()

		pygame.display.update()

		return True, self