def update(self):
        self.running = True
        self.player.update()
        if self.player.health <= 0:
            for entity in self.npcEntities:
                self.npcEntities.remove(entity)
        self.background.paraX = self.player.xVelocity * Settings.starParallaxX
        self.background.paraY = self.player.yVelocity * Settings.starParallaxY
        self.background.update()

        for entity in self.npcEntities:
            if entity.update():
                explosion = Explosion(self, entity.xPosition, entity.yPosition)
                explosion.sprite = pygame.image.load("../assets/explosion.png")
                explosion.setSprite(explosion.sprite)
                self.npcEntities.append(explosion)
                self.npcEntities.remove(entity)

        for entity in self.playerProjectileEntities:
            if entity.update():
                self.playerProjectileEntities.remove(entity)
        for entity in self.npcProjectileEntities:
            if entity.update():
                self.npcProjectileEntities.remove(entity)

        if self.exitTimer < 0 and len(self.npcEntities) == 0:
            self.exitTimer = 10

        if self.exitTimer > 0:
            self.exitTimer -= 1
        elif self.exitTimer == 0:
            self.running = False
            self.exitTimer = -1

        return self.running
Esempio n. 2
0
 def hit(self, other):
     if str(type(other)).__contains__("Invader"):
         Sound.hit()
         lives = RunningValues.lives_variable.get()
         lives = lives - 1
         RunningValues.lives_variable.set(lives)
         Explosion.create_explosion(self.canvas, self.x + self.width / 2,
                                    self.y - self.height / 2)
         RunningValues.player_dead()
Esempio n. 3
0
    def hit(self, other):
        if isinstance(other, PlayerMissile):
            Sound.invader()
            Invader.alive_invader_count = Invader.alive_invader_count - 1
            RunningValues.delete_list.append(self)
            if self in RunningValues.render_list:
                RunningValues.render_list.remove(self)
            self.canvas.delete(self.img1)
            self.canvas.delete(self.img2)
            score = RunningValues.score_variable.get()
            score = score + 1
            RunningValues.score_variable.set(score)

            Explosion.create_explosion(self.canvas, self.x + self.width / 2,
                                       self.y - self.height / 2)
Esempio n. 4
0
 def explode(self, objects):
     # Explode bomb, draw the stain on the background
     self.exploded = True
     self.anim = Explosion(0, (self.x, self.y), self.sounds[0],
                           self.textures[1])
     self.parent.backdrop.blit(
         self.textures[2].subsurface(192 * randint(0, 1),
                                     128 * randint(0, 1), 192, 128),
         ((GRIDX + GRATIO * self.x) - 128, (GRIDY + GRATIO * self.y) - 32))
     for ob in objects:
         if sqrt((ob.x - self.x)**2 + (ob.y - self.y)**2) < 2:
             # Try to hur the enemy, if its not an entity, destroy it
             try:
                 ob.destroy()
             except:
                 ob.hurt(8)
Esempio n. 5
0
	def explode (self, villian):
		centerX, centerY = villian.getCenter()
		self.villianList.remove(villian)
		villian.kill()
		if (self.sound_on):
			Sounds().Explode()
		self.explosionList.append(Explosion.Explosion(self._containers, self._screen, numpy.array([centerX, centerY])))
Esempio n. 6
0
def grooveModeTimerFired(dt, data):
    moveBackground(data)
    data.explosions.update()
    if time.time() - data.playStartTime > data.songGameOffset:
        # since there is some overlap between frames of video and chunks of
        # audio, only add a new obstacle if the chunk of audio has moved \
        # forward and there is a beat
        data.lastIndex = data.curIndex
        data.curIndex = data.song.getCurrentIndex(
            pygame.mixer.music.get_pos() + data.songGameOffset * 1000)
        if data.curIndex > data.lastIndex:
            beats = data.song.isBeat(data.curIndex)
            # add an obstacle to course
            # use mid range frequencies
            if beats[3] or beats[4] or beats[5]:
                if data.lastLane == 0:
                    lane = np.random.randint(0, data.lanes - 1)
                elif data.lastLane == 1:
                    lane = np.random.randint(0, data.lanes)
                elif data.lastLane == 2:
                    lane = np.random.randint(1, data.lanes)
                data.obstacles.add(Obstacle.Obstacle(lane, data))
                data.lastLane = lane
        # check collisions
        for player in pygame.sprite.groupcollide(data.players, data.obstacles,
                                                 False, True):
            player.turnOn()
            data.explosions.add(Explosion(player.x, player.y))
            # data.score += 1
            data.score.update()

        #update sprites
        for player in data.players:
            player.updateTimer()
        data.obstacles.update(data)
Esempio n. 7
0
def rhythmModeDrumHit(data, players, obstacles):
    collision = pygame.sprite.groupcollide(players, obstacles, False, True)
    for player in players:
        player.turnOn()
        if player not in collision:
            data.score.breakStreak()
    for player in collision:
        data.explosions.add(Explosion(player.x, player.y))
        data.score.update()
Esempio n. 8
0
    def make_enemies(self):

        laser = sprite.groupcollide(self.bullets, self.mysteryGroup, True,
                                    True)
        if laser:
            for value in mysterydict.values():
                for currentSprite in value:
                    currentSprite.mysteryEntered.stop()
                    self.sounds['mysterykilled'].play()
                    score = self.calculate_score(currentSprite.row)
                    explosion = Explosion(currentSprite.rect.x,
                                          currentSprite.rect.y,
                                          currentSprite.row, False, True,
                                          score, self)
                    self.explosionsGroup.add(explosion)
                    self.allSprites.remove(currentSprite)
                    self.laserGroup.remove(currentSprite)
                    newShip = Highlaser(game, self.player.rect.x,
                                        self.player.rect.x)
                    self.allSprites.add(newShip)
                    self.laserGroup.add(newShip)
                    break
        print self.boss
        if self.boss % 2 == 1:
            self.mobs_shape = 'BOSS'
            enemies = EnemiesGroup(10, 5, 'BOSS')
            for row in range(5):
                for column in range(10):
                    enemy = Enemy(row, column, self)
                    enemy.rect.x = 157 + (column * 1)
                    enemy.rect.y = self.enemyPosition + (row * 1)
                    enemies.add(enemy)
        else:
            mobs_grp_choice = randint(0, 1)
            if mobs_grp_choice == 0:
                self.mobs_shape = 'EXPLODED'
                enemies = EnemiesGroup(10, 5, 'EXPLODED')
                for row in range(5):
                    for column in range(10):
                        enemy = Enemy(row, column, self)
                        enemy.rect.x = randint(0, 750)
                        enemy.rect.y = randint(100, 400)
                        enemies.add(enemy)
            else:
                self.mobs_shape = 'GROUP'
                enemies = EnemiesGroup(10, 5, 'GROUP')
                for row in range(5):
                    for column in range(10):
                        enemy = Enemy(row, column, self)
                        enemy.rect.x = 157 + (column * 50)
                        enemy.rect.y = self.enemyPosition + (row * 45)
                        enemies.add(enemy)

        self.enemies = enemies
        self.allSprites = sprite.Group(self.player, self.enemies,
                                       self.livesGroup, self.mysteryShip,
                                       self.highlaser)
Esempio n. 9
0
 def on_tile_collide(self, tile,entities, **kwargs):
     self.x_velocity = 0
     self.y_velocity = 0
     self.exploding = True
     explosion = Explosion(pygame.Rect(self.rect.topleft,(128,128)))
     explosion.rect.center = self.rect.center
     entities.append(explosion)
     for g in self.groups():
         g.remove(self)
Esempio n. 10
0
 def explode(self, friend):
     centerX, centerY = friend.getCenter()
     self.friendList.remove(friend)
     friend.kill()
     self.explosionList.append(
         Explosion.Explosion(self._containers,
                             self._screen,
                             numpy.array([centerX, centerY]),
                             imageFile='star.png'))
     Sounds().SmallExplode()
Esempio n. 11
0
 def explode(self, boss):
     centerX, centerY = boss.getCenter()
     self.bossList.remove(boss)
     boss.kill()
     if (self.sound_on):
         Sounds().Explode()
     self.explosionList.append(
         Explosion.Explosion(self._containers,
                             self._screen,
                             numpy.array([centerX, centerY]),
                             explosionType='boss'))
Esempio n. 12
0
	def explode(self, objects):
		# Explode bomb, draw the stain on the background
		self.exploded = True
		self.anim = Explosion(0, (self.x, self.y), self.sounds[0], self.textures[1])
		self.parent.backdrop.blit(self.textures[2].subsurface(192*randint(0,1), 128*randint(0,1), 192, 128), ((GRIDX + GRATIO*self.x) - 128, (GRIDY + GRATIO*self.y) - 32))
		for ob in objects:
			if sqrt((ob.x-self.x)**2 + (ob.y-self.y)**2) < 2:
				# Try to hur the enemy, if its not an entity, destroy it
				try:
					ob.destroy()
				except:
					ob.hurt(8)
Esempio n. 13
0
 def explosivifySprite(
         self,
         sprite_rect,
         explosionCount=4
 ):  #Explode around a sprite, optional explosions count
     for i in range(0, explosionCount):
         x_pos = sprite_rect.x - int(.4 * sprite_rect.width)
         y_pos = sprite_rect.y - int(.4 * sprite_rect.height)
         offset_x = random.randint(
             0, sprite_rect.width + int(.4 * sprite_rect.width))
         offset_y = random.randint(0, sprite_rect.height + int(
             .4 * sprite_rect.height))  #40% increased explosion radius >:)
         self.explosion_sprites.add(
             Explosion(x_pos + offset_x, y_pos + offset_y))
Esempio n. 14
0
    def update(self):
        super(NormalBall, self).update()

        # Testing if it's time to explode/Exploding
        if (self.state == 1 and self.timeOfImpact and time.time() >
                self.timeOfImpact + 0.8 + self.randomExplosionDelay):
            self.state = 2
            # Creating explosion
            self.gameObjects.addEntity(
                Explosion.Explosion(self.fileManager, self.scale,
                                    self.rect.center))
            # Playing sound
            self.fileManager.playBallExplode('NormalBall')

        # Updating explosion
        if self.state == 2:
            self.__exploding()
Esempio n. 15
0
	def __init__(self, parent, variant, xy, sounds, textures, explode=False):
		self.variant = variant
		self.x = xy[0]
		self.y = xy[1]
		self.sounds = sounds
		self.textures = textures
		self.parent = parent # So we can stain the room floor

		if not explode:
			self.bounds = Rect(GRIDX+GRATIO*self.x,GRIDY+GRATIO*self.y, 32, 64)
		else:
			# You cant collide with a bomb that will explode
			self.bounds = Rect(0,0,0,0)

		# Should the bomb explode
		self.shouldExplode = explode
		self.placed = cTime()

		self.anim = Animation([textures[0].subsurface(0,0,64,64)], .2)
Esempio n. 16
0
    def __init__(self, parent, variant, xy, sounds, textures, explode=False):
        self.variant = variant
        self.x = xy[0]
        self.y = xy[1]
        self.sounds = sounds
        self.textures = textures
        self.parent = parent  # So we can stain the room floor

        if not explode:
            self.bounds = Rect(GRIDX + GRATIO * self.x,
                               GRIDY + GRATIO * self.y, 32, 64)
        else:
            # You cant collide with a bomb that will explode
            self.bounds = Rect(0, 0, 0, 0)

        # Should the bomb explode
        self.shouldExplode = explode
        self.placed = cTime()

        self.anim = Animation([textures[0].subsurface(0, 0, 64, 64)], .2)
Esempio n. 17
0
class Bomb(Item):
    """Droppable bomb class"""

    collideable = False
    pickedUp = False
    exploded = False
    fuse = 2

    def __init__(self, parent, variant, xy, sounds, textures, explode=False):
        self.variant = variant
        self.x = xy[0]
        self.y = xy[1]
        self.sounds = sounds
        self.textures = textures
        self.parent = parent  # So we can stain the room floor

        if not explode:
            self.bounds = Rect(GRIDX + GRATIO * self.x,
                               GRIDY + GRATIO * self.y, 32, 64)
        else:
            # You cant collide with a bomb that will explode
            self.bounds = Rect(0, 0, 0, 0)

        # Should the bomb explode
        self.shouldExplode = explode
        self.placed = cTime()

        self.anim = Animation([textures[0].subsurface(0, 0, 64, 64)], .2)

    def explode(self, objects):
        # Explode bomb, draw the stain on the background
        self.exploded = True
        self.anim = Explosion(0, (self.x, self.y), self.sounds[0],
                              self.textures[1])
        self.parent.backdrop.blit(
            self.textures[2].subsurface(192 * randint(0, 1),
                                        128 * randint(0, 1), 192, 128),
            ((GRIDX + GRATIO * self.x) - 128, (GRIDY + GRATIO * self.y) - 32))
        for ob in objects:
            if sqrt((ob.x - self.x)**2 + (ob.y - self.y)**2) < 2:
                # Try to hur the enemy, if its not an entity, destroy it
                try:
                    ob.destroy()
                except:
                    ob.hurt(8)

    def pickup(self):
        if not self.shouldExplode:
            self.pickedUp = True

    def render(self, surface, time, objects, ox=0, oy=0):
        if self.pickedUp:
            return False

        if not self.shouldExplode:
            surface.blit(
                self.anim.render(time),
                ((GRIDX + GRATIO * self.x) - self.anim.width // 2 + ox,
                 (GRIDY + GRATIO * self.y) - self.anim.height // 2 + oy))
            return True

        if not self.exploded:
            # render the  normal bomb

            frame = self.anim.render(time)
            surface.blit(
                frame,
                ((GRIDX + GRATIO * self.x) - self.anim.width // 2 + ox,
                 (GRIDY + GRATIO * self.y) - self.anim.height // 2 + oy))

            if time - self.placed >= self.fuse:
                self.explode(objects)
            return True
        else:
            # Render the explosion
            return self.anim.render(surface, time)
Esempio n. 18
0
 def lanzarExplosion(self, pos, tamano):
     explosion = Explosion(pos, tamano, 'centro')
     self.explosiones.append(explosion)
     explosion.crearExplosiones(self.bomberman.tamExplosion,
                                self.explosiones, self)
Esempio n. 19
0
class Bomb(Item):
	"""Droppable bomb class"""

	collideable = False
	pickedUp = False
	exploded = False
	fuse = 2

	def __init__(self, parent, variant, xy, sounds, textures, explode=False):
		self.variant = variant
		self.x = xy[0]
		self.y = xy[1]
		self.sounds = sounds
		self.textures = textures
		self.parent = parent # So we can stain the room floor

		if not explode:
			self.bounds = Rect(GRIDX+GRATIO*self.x,GRIDY+GRATIO*self.y, 32, 64)
		else:
			# You cant collide with a bomb that will explode
			self.bounds = Rect(0,0,0,0)

		# Should the bomb explode
		self.shouldExplode = explode
		self.placed = cTime()

		self.anim = Animation([textures[0].subsurface(0,0,64,64)], .2)

	def explode(self, objects):
		# Explode bomb, draw the stain on the background
		self.exploded = True
		self.anim = Explosion(0, (self.x, self.y), self.sounds[0], self.textures[1])
		self.parent.backdrop.blit(self.textures[2].subsurface(192*randint(0,1), 128*randint(0,1), 192, 128), ((GRIDX + GRATIO*self.x) - 128, (GRIDY + GRATIO*self.y) - 32))
		for ob in objects:
			if sqrt((ob.x-self.x)**2 + (ob.y-self.y)**2) < 2:
				# Try to hur the enemy, if its not an entity, destroy it
				try:
					ob.destroy()
				except:
					ob.hurt(8)

	def pickup(self):
		if not self.shouldExplode:
			self.pickedUp = True


	def render(self, surface, time, objects, ox=0, oy=0):
		if self.pickedUp:
			return False

		if not self.shouldExplode:
			surface.blit(self.anim.render(time), ((GRIDX + GRATIO*self.x) - self.anim.width//2+ox, (GRIDY + GRATIO*self.y) - self.anim.height//2+oy))
			return True

		if not self.exploded:
			# render the  normal bomb

			frame = self.anim.render(time)
			surface.blit(frame, ((GRIDX + GRATIO*self.x) - self.anim.width//2+ox, (GRIDY + GRATIO*self.y) - self.anim.height//2+oy))

			if time-self.placed >= self.fuse:
				self.explode(objects)
			return True
		else:
			# Render the explosion
			return self.anim.render(surface, time)
Esempio n. 20
0
    def check_collisions(self):
        collidedict = sprite.groupcollide(self.bullets, self.enemyBullets,
                                          True, False)
        if collidedict:
            for value in collidedict.values():
                for currentSprite in value:
                    self.enemyBullets.remove(currentSprite)
                    self.allSprites.remove(currentSprite)

        enemiesdict = sprite.groupcollide(self.bullets, self.enemies, True,
                                          False)
        if enemiesdict:
            for value in enemiesdict.values():
                for currentSprite in value:
                    self.enemies.kill(currentSprite)
                    self.sounds['invaderkilled'].play()
                    score = self.calculate_score(currentSprite.row)
                    explosion = Explosion(currentSprite.rect.x,
                                          currentSprite.rect.y,
                                          currentSprite.row, False, False,
                                          score, self)
                    self.explosionsGroup.add(explosion)
                    self.allSprites.remove(currentSprite)
                    self.enemies.remove(currentSprite)
                    self.gameTimer = time.get_ticks()
                    break

        mysterydict = sprite.groupcollide(self.bullets, self.mysteryGroup,
                                          True, True)

        if mysterydict:
            for value in mysterydict.values():
                for currentSprite in value:
                    currentSprite.mysteryEntered.stop()
                    self.sounds['mysterykilled'].play()
                    score = self.calculate_score(currentSprite.row)
                    explosion = Explosion(currentSprite.rect.x,
                                          currentSprite.rect.y,
                                          currentSprite.row, False, True,
                                          score, self)
                    self.explosionsGroup.add(explosion)
                    self.allSprites.remove(currentSprite)
                    self.mysteryGroup.remove(currentSprite)
                    newShip = Mystery(self)
                    self.allSprites.add(newShip)
                    self.mysteryGroup.add(newShip)
                    break

        bulletsdict = sprite.groupcollide(self.enemyBullets, self.playerGroup,
                                          True, False)
        if bulletsdict:
            for value in bulletsdict.values():
                for playerShip in value:
                    if self.lives == 3:
                        self.lives -= 1
                        self.livesGroup.remove(self.life3)
                        self.allSprites.remove(self.life3)
                    elif self.lives == 2:
                        self.lives -= 1
                        self.livesGroup.remove(self.life2)
                        self.allSprites.remove(self.life2)
                    elif self.lives == 1:
                        self.lives -= 1
                        self.livesGroup.remove(self.life1)
                        self.allSprites.remove(self.life1)
                    elif self.lives == 0:
                        self.gameOver = True
                        self.boss = 0
                        self.startGame = False
                    self.sounds['shipexplosion'].play()
                    explosion = Explosion(playerShip.rect.x, playerShip.rect.y,
                                          0, True, False, 0, self)
                    self.explosionsGroup.add(explosion)
                    self.allSprites.remove(playerShip)
                    self.playerGroup.remove(playerShip)
                    self.makeNewShip = True
                    self.shipTimer = time.get_ticks()
                    self.shipAlive = False

        if sprite.groupcollide(self.enemies, self.playerGroup, True, True):
            self.gameOver = True
            self.startGame = False

        sprite.groupcollide(self.bullets, self.allBlockers, True, True)
        sprite.groupcollide(self.enemyBullets, self.allBlockers, True, True)
        sprite.groupcollide(self.enemies, self.allBlockers, False, True)
Esempio n. 21
0
        # required because their are two types of spirals implemented
        if pattern == 'spiral':
            if np.random.choice([0, 1]):
                pattern = 'archimedean'
            else:
                pattern = 'golden'

        random_parameters = parameters.choose_random(pattern)

        if pattern == 'golden':  # golden spiral
            shape = Spiral.Golden(WIDTH, HEIGHT, *random_parameters)
        elif pattern == 'archimedean':  # archimedean spiral
            shape = Spiral.Archimedean(WIDTH, HEIGHT, *random_parameters)
        elif pattern == 'explosion':  # explosion
            shape = Explosion.Explosion(WIDTH, HEIGHT, *random_parameters)
        elif pattern == 'tile':  # tile
            shape = Tile.Tile(WIDTH, HEIGHT, *random_parameters)
        elif pattern == 'branch':  # branch
            shape = Branch.Branch(WIDTH, HEIGHT, *random_parameters)

        shape.filepath = f'{PATH_TO_IMAGE_FOLDER}/{shape.label}{idx}.png'
        shape.maskpath = f'{PATH_TO_MASKS_FOLDER}/{shape.label}_mask{idx}.png'

        # an image must be created before a corresponding mask can be created
        shape.create_image()
        shape.create_mask(pattern_labels)

        if display_images:

            img = Image.open(shape.filepath)
Esempio n. 22
0
 def addOther(self, xy):
     self.other.append(
         Explosion(0, xy, self.sounds["explosion"],
                   self.textures["explosions"]))
Esempio n. 23
0
    def explose(self):
        # On enlève 1 bombe au nombre de bombe posée par le personnage
        self.perso.nb_bombePosee -=1
        # On enlève la bombe de la liste des bombes
        self.carte.liste_bombe.remove(self)

        # Coordonnées de la bombe
        x = self.rect.x
        y = self.rect.y

        # On affiche l'explosion à la place de la bombe
        self.carte.liste_explosion.add(Explosion(self.carte, 'centre', x, y))

        explosion_interrompueH = False
        explosion_interrompueB = False
        explosion_interrompueG = False
        explosion_interrompueD = False

        # Pour toutes les cases entre la bombe et sa portee maximum dans les 4 directions
        for portee in range(1, (self.perso.bombe_portee + 1)):
            # Direction : Haut
            if not(explosion_interrompueH): # On vérifie si l'explosion de la bombe n'est pas intérompue
                # On vérifie si l'explosion est possible
                verifExplosion = self.verifierExplosion(self.carte.getCase((x, y-(portee*taille_sprite))))
                # Si elle n'est pas possible, l'explosion est intérompue dans cette direction
                if not(verifExplosion):
                    explosion_interrompueH = True
                else:
                    # Si c'est un bloc, l'explosion sera différente que dans le vide
                    if(verifExplosion == 'bloc'):
                        self.carte.liste_explosion.add(Explosion(self.carte, 'bloc', x, y-(portee*taille_sprite)))
                        # l'explosion est intérompue dans cette direction
                        explosion_interrompueH = True
                    # Sinon on affiche la bombe
                    else:
                        # On vérifie si l'explosion est bout de sa portée
                        if(portee == self.perso.bombe_portee):
                            self.carte.liste_explosion.add(Explosion(self.carte, 'verticaleH', x, y-(portee*taille_sprite)))
                        else:
                            self.carte.liste_explosion.add(Explosion(self.carte, 'verticale', x, y-(portee*taille_sprite)))

            # Direction : Bas
            if not(explosion_interrompueB):
                verifExplosion = self.verifierExplosion(self.carte.getCase((x, y+(portee*taille_sprite))))
                if not(verifExplosion):
                    explosion_interrompueB = True
                else:
                    if(verifExplosion == 'bloc'):
                        self.carte.liste_explosion.add(Explosion(self.carte, 'bloc', x, y+(portee*taille_sprite)))
                        explosion_interrompueB = True
                    else:
                        if(portee == self.perso.bombe_portee):
                            self.carte.liste_explosion.add(Explosion(self.carte, 'verticaleB', x, y+(portee*taille_sprite)))
                        else:
                            self.carte.liste_explosion.add(Explosion(self.carte, 'verticale', x, y+(portee*taille_sprite)))

            # Direction : Gauche
            if not(explosion_interrompueG):
                verifExplosion = self.verifierExplosion(self.carte.getCase((x-(portee*taille_sprite), y)))
                if not(verifExplosion):
                    explosion_interrompueG = True
                else:
                    if(verifExplosion == 'bloc'):
                        self.carte.liste_explosion.add(Explosion(self.carte, 'bloc', x-(portee*taille_sprite), y))
                        explosion_interrompueG = True
                    else:
                        if(portee == self.perso.bombe_portee):
                            self.carte.liste_explosion.add(Explosion(self.carte, 'horizontaleG', x-(portee*taille_sprite), y))
                        else:
                            self.carte.liste_explosion.add(Explosion(self.carte, 'horizontale', x-(portee*taille_sprite), y))

            # Direction : Droite
            if not(explosion_interrompueD):
                verifExplosion = self.verifierExplosion(self.carte.getCase((x+(portee*taille_sprite), y)))
                if not(verifExplosion):
                    explosion_interrompueD = True
                else:
                    if(verifExplosion == 'bloc'):
                        self.carte.liste_explosion.add(Explosion(self.carte, 'bloc', x+(portee*taille_sprite), y))
                        explosion_interrompueD = True
                    else:
                        if(portee == self.perso.bombe_portee):
                            self.carte.liste_explosion.add(Explosion(self.carte, 'horizontaleD', x+(portee*taille_sprite), y))
                        else:
                            self.carte.liste_explosion.add(Explosion(self.carte, 'horizontale', x+(portee*taille_sprite), y))

        # Les bonus touchés par l'explosion disparaissent
        bonus_touche = pygame.sprite.groupcollide(self.carte.liste_bonus, self.carte.liste_explosion, False, False)
        for bonus in bonus_touche:
            bonus.disparaitre()

        # Les blocs touchés par l'explosion sont détruient
        bloc_touche = pygame.sprite.groupcollide(self.carte.liste_bloc, self.carte.liste_explosion, False, False)
        for bloc in bloc_touche:
            bloc.detruire()

        # Les bombe touchées par l'explosion explosent
        bombe_touche = pygame.sprite.groupcollide(self.carte.liste_bombe, self.carte.liste_explosion, False, False)
        for bombe in bombe_touche:
            bombe.explose()

        # Les personnages touchés par l'explosion meurent
        perso_touche = pygame.sprite.groupcollide(self.carte.liste_perso, self.carte.liste_explosion, False, False)
        for perso in perso_touche:
            perso.mourir()

        # Les bots touchés par l'explosion meurtent
        bot_touche = pygame.sprite.groupcollide(self.carte.liste_bot, self.carte.liste_explosion, False, False)
        for bot in bot_touche:
            bot.mourir()
Esempio n. 24
0
def game_loop():

    new()

    # Create game loop conditions and score
    running = True
    score = 0
    count = 0
    shadow_score = 0
    rocks_condition = True
    bullets_exist = False
    dialogue = True
    music_play = True
    stage_1_end = False
    explosion_counter = 0

    # Play background music
    def music_1(condition):
        if condition:
            pygame.mixer.music.load(
                os.path.join(sound_folder, 'Vegas_Loop.wav'))
            pygame.mixer.music.set_volume(.5)
            pygame.mixer.music.play(-1)
        else:
            pygame.mixer.music.load(os.path.join(sound_folder,
                                                 'Serotonin.wav'))
            pygame.mixer.music.set_volume(1)
            pygame.mixer.music.play(-1)

    # Game Loop
    while running:
        # Set FPS
        dt = clock.tick(FPS) / 1000
        mainSurface.blit(background, background_rect)
        if music_play and rocks_condition:
            music_1(True)
            music_play = False

        if not music_play and not rocks_condition:
            music_1(False)
            music_play = True
        if score > 1500:
            rocks_condition = False

        # Events loop
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            if dialogue:
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RETURN:
                        dialogue = False
            elif event.type == pygame.KEYDOWN and not dialogue:
                if event.key == pygame.K_ESCAPE:
                    # pygame.mixer.music.pause()
                    menu_resume()
                if event.key == pygame.K_SPACE:
                    shoot_sound.play()
                    shoot_sound.set_volume(.3)
                    shoot_player(player)
                if event.key == pygame.K_RETURN and dialogue:
                    dialogue = False

        # Control rules for all units movement
        for player in units_player:
            if not dialogue and not stage_1_end:
                Player.player_1.manual_control(player)
        for unit in units_rocks:
            if not dialogue:
                SpaceRock.space_rock1.AI_control(unit)
        if not rocks_condition:
            for unit in units_mobships:
                if not dialogue:
                    Mobship.mob_ship.AI_control_outside(unit)
        for planet in units_planets:
            Planet.planet_1.AI_control(planet, shadow_score, count)
            count = 0
            shadow_score = 0

        # Checking if mobs entered the screen and assign new controls and assign bullet
        for unit in units_mobships:
            if unit.rect.right <= SCREEN_WIDTH or unit.rect.top <= 0:
                Mobship.mob_ship.AI_control_inside(unit)
                if (unit.rect.left <
                        SCREEN_WIDTH / 2 + 200) and not bullets_exist:
                    super_bullet = Bullets.bullet_2(mainSurface,
                                                    unit.rect.left,
                                                    unit.rect.centery)
                    shoot_sound_2.play()
                    shoot_sound_2.set_volume(.2)
                    units_bullets_mob.add(super_bullet)
                    units_all.add(super_bullet)
                    bullets_exist = True
                if bullets_exist:
                    expl_bullet = Explosion.explosion(
                        mainSurface, super_bullet.rect.left,
                        super_bullet.rect.centery, 'small')
                    units_all.add(expl_bullet)
                if len(units_bullets_mob) == 0:
                    bullets_exist = False

        # Checking if any rock passed the screen to apply self destruct
        for unit in units_rocks:
            if unit.rect.right <= 0:
                unit.kill()
                score += 10
                if rocks_condition:
                    rock = new_rock()
                count += 1
            if unit.rect.bottom > SCREEN_HEIGHT:
                print('check3!')
                unit.kill()
                if rocks_condition:
                    rock = new_rock()

        # Checking collision between rocks and rocks and initiating speedy rocks
        for unit in units_rocks:
            units_rocks.remove(unit)
            if (collision_check(unit, units_rocks, False,
                                False)) and unit.rect.x <= SCREEN_WIDTH:
                unit.speedx -= 5
                explosion_sound.set_volume(.2)
                explosion_sound.play()
                expl_rock = Explosion.explosion(mainSurface, unit.rect.centerx,
                                                unit.rect.centery, 'large')
                units_all.add(expl_rock)
            units_rocks.add(unit)

        # Checking collision between rocks and bullets
        hits_2 = pygame.sprite.groupcollide(units_rocks, units_bullets, True,
                                            True, pygame.sprite.collide_circle)
        for hit in hits_2:
            if rocks_condition:
                new_rock()
            score += 10
            shadow_score += 10
            explosion_sound.set_volume(.2)
            explosion_sound.play()
            expl_rock = Explosion.explosion(mainSurface, hit.rect.centerx,
                                            hit.rect.centery, 'large')
            units_all.add(expl_rock)

        # Checking collision between player and rocks
        hits_1 = pygame.sprite.groupcollide(units_player, units_rocks, False,
                                            True, pygame.sprite.collide_circle)
        for hit in hits_1:
            rock = new_rock()
            for unit in units_rocks:
                damage = unit.hit_damage
            player.hp -= damage
            explosion_player_sound.play()
            expl_player = Explosion.explosion(mainSurface, player.rect.centerx,
                                              player.rect.centery, 'large')
            units_all.add(expl_player)
            if player.hp <= 0:
                player.hide()
                player.lives += -1
                player.hp = player.full_hp
                if player.lives == 0:
                    running = False

        # Check collision between player ship and enemy bullets
        if collision_check_groups(units_player, units_bullets_mob, False,
                                  True):
            player.hp -= 100
            explosion_player_sound.play()
            expl_player = Explosion.explosion(mainSurface, player.rect.centerx,
                                              player.rect.centery, 'large')
            units_all.add(expl_player)
            if player.hp <= 0:
                player.hide()
                player.lives += -1
                player.hp = player.full_hp
                if player.lives == 0:
                    running = False

        # Check collision between player bullets and enemy bullets
        if collision_check_groups(units_bullets, units_bullets_mob, True,
                                  False):
            pass

        # Check collision between player bullets and enemy ship
        if collision_check_groups(units_mobships, units_bullets, False, True):
            for unit in units_mobships:
                unit.hp -= 100
                expl_mob_ship = Explosion.explosion(mainSurface,
                                                    unit.rect.centerx,
                                                    unit.rect.centery, 'large')
                explosion_sound_2.play()
                units_all.add(expl_mob_ship)
                print(unit.hp)
                if unit.hp <= 0:
                    stage_1_end = True

        # Explosion of boss when dead
        if stage_1_end:
            for unit in units_bullets_mob:
                unit.kill()
            for unit in units_bullets:
                unit.kill()
        if explosion_counter < 5 and stage_1_end:
            clock.tick(3)
            for unit in units_mobships:
                if explosion_counter == 0:
                    expl_mob_ship = Explosion.explosion(
                        mainSurface, unit.rect.right, unit.rect.centery,
                        'small')
                    units_all.add(expl_mob_ship)
                    explosion_sound_3.play()
                    explosion_counter += 1
                    print('explosion of boss 0')
                elif explosion_counter == 1:
                    expl_mob_ship = Explosion.explosion(
                        mainSurface, unit.rect.left, unit.rect.centery,
                        'large')
                    units_all.add(expl_mob_ship)
                    explosion_sound_3.play()
                    explosion_counter += 1
                    print('explosion of boss 1')
                elif explosion_counter == 2:
                    expl_mob_ship = Explosion.explosion(
                        mainSurface, unit.rect.right, unit.rect.centery,
                        'small')
                    units_all.add(expl_mob_ship)
                    explosion_sound_3.play()
                    explosion_counter += 1
                elif explosion_counter == 3:
                    expl_mob_ship = Explosion.explosion(
                        mainSurface, unit.rect.left, unit.rect.centery,
                        'large')
                    units_all.add(expl_mob_ship)
                    explosion_sound_3.play()
                    explosion_counter += 1
                elif explosion_counter == 4:
                    expl_mob_ship = Explosion.explosion(
                        mainSurface, unit.rect.right, unit.rect.centery,
                        'small')
                    explosion_sound_3.play()
                    units_all.add(expl_mob_ship)
                    explosion_counter += 1
                    unit.kill()

        # Background and game units on screen
        units_all.update()
        units_all.draw(mainSurface)
        if dialogue:
            dialogue_1 = draw.dialogue(
                mainSurface,
                "Welcome this is my first game. Press Enter to continue! ", 0,
                400, SCREEN_WIDTH, 300, blue, white, True)
        # Screen platform, e.g. (Score, Hp bar)
        text_1 = draw.text(mainSurface, 'Score ' + str(score), 18,
                           SCREEN_WIDTH / 2, 20, white)
        hp_bar = draw.draw_hp_bar(mainSurface, 0, 20, player.full_hp,
                                  player.hp)
        lives_icons = draw.draw_icons_lives(mainSurface, 0, player.lives)
        if explosion_counter == 5:
            text_2 = draw.text(mainSurface, 'You Win', 40, SCREEN_WIDTH / 2,
                               SCREEN_HEIGHT / 2, blue_bright)
        pygame.display.update()
Esempio n. 25
0
    def run_logic(self):
        if not self.game_over and not self.end:
            # Move all the sprites
            self.all_sprites_list.update()

            # For each bonus alien if alien.x > screen.width + 10 remove alien
            for bonus_alien in self.alien_list:
                if bonus_alien.rect.x > SCREEN_WIDTH + 10:
                    self.alien_list.remove(bonus_alien)
                    self.all_sprites_list.remove(bonus_alien)

            # Have the aliens drop bombs
            for alien in self.alien_list:
                rand = random.randrange(200)
                if (rand < 2):
                    if (alien.bombing == False and alien.bombs > 0):
                        bomb = Bomb()
                        alien.bombing = True
                        alien.bombs -= 1
                        bomb.rect.x = alien.rect.x + 18
                        bomb.rect.y = alien.rect.y
                        # Add the bomb to the lists
                        self.all_sprites_list.add(bomb)
                        self.bomb_list.add(bomb)

            # Calculate mechanics for each bullet
            for bullet in self.bullet_list:

                # See if it hit an alien or wall
                alien_hit_list = pygame.sprite.spritecollide(
                    bullet, self.alien_list, False)  # Changed to False
                wall_hit_list = pygame.sprite.spritecollide(
                    bullet, self.wall_list, True)

                # For each alien hit, remove the bullet and add to the score
                for alien in alien_hit_list:
                    alien.hitpoints -= 1
                    if alien.hitpoints <= alien.start_hitpoints / 2:
                        alien.not_damaged = False
                    if alien.hitpoints < 1:
                        if alien.bonus_points > 0:
                            Game.score += alien.bonus_points
                        else:
                            Game.score += alien.start_hitpoints * 10

                        # Every 1000 points player gets a new life
                        if Game.score > 0 and Game.score % 100 == 0:
                            Game.lives += 1
                            self.life.play()
                        alien_hit_list.remove(alien)
                        self.alien_list.remove(alien)
                        self.all_sprites_list.remove(alien)
                        self.ping.play()
                        print(Game.score)
                    self.explosion.play()
                    explode = Explosion()
                    explode.rect.x = alien.rect.x
                    explode.rect.y = alien.rect.y
                    self.all_sprites_list.add(explode)
                    self.explosion_list.add(explode)
                    self.bullet_list.remove(bullet)
                    self.all_sprites_list.remove(bullet)

                # Kill bullet object if it flies up off the screen
                if bullet.rect.y < -10:
                    self.bullet_list.remove(bullet)
                    self.all_sprites_list.remove(bullet)

                # Remove wall pieces if they have been hit
                for wall in wall_hit_list:
                    self.explosion.play()
                    self.bullet_list.remove(bullet)
                    self.all_sprites_list.remove(bullet)

            # Remove explosion objects after they have exploded
            for exp in self.explosion_list:
                if exp.finished:
                    self.explosion_list.remove(exp)
                    self.all_sprites_list.remove(exp)

            # Update game for each bomb dropped
            for bomb in self.bomb_list:
                wall_hit_list = pygame.sprite.spritecollide(
                    bomb, self.wall_list, True)
                bomb_hit_list = pygame.sprite.spritecollide(
                    self.player, self.bomb_list, False)

                # Play explosion sound and remove bombs that hit the wall
                for wall in wall_hit_list:
                    self.explosion.play()
                    self.bomb_list.remove(bomb)
                    self.all_sprites_list.remove(bomb)

                # Play hit sound and rove bomb that have hit player
                # Reduce player lives and end game if they have no lives
                for b in bomb_hit_list:
                    self.bomb_list.remove(b)
                    self.all_sprites_list.remove(b)
                    self.hit.play()
                    Game.lives -= 1
                    print("Lives = " + str(Game.lives))
                    if Game.lives == 0:
                        self.end = True

                # Remove alien bombs from game that have droped below screen
                if bomb.rect.y > SCREEN_HEIGHT:
                    self.bomb_list.remove(bomb)
                    self.all_sprites_list.remove(bomb)

            # See if the self.player alien has collided with anything.
            aliens_hit_list = pygame.sprite.spritecollide(
                self.player, self.alien_list, False)

            # Check the list of collisions.
            for alien in aliens_hit_list:
                alien.change_y *= -1
                alien.change_x *= -1
                print("Collided with Alien")

            # If alien hits wall play explsion, remove wall piece
            for wall in self.wall_list:
                alien_hit_list = pygame.sprite.spritecollide(
                    wall, self.alien_list, True)
                for alien in alien_hit_list:
                    self.explosion.play()
                    self.wall_list.remove(wall)
                    self.all_sprites_list.remove(wall)
                    print("Alien Hit Wall")

            # Check to see if the game is over
            if len(self.alien_list) == 0:
                self.game_over = True
                Game.level_number += 1
Esempio n. 26
0
                player.die()
                net.theChosenNet = True
                control = False
                player.x = net.x + (net.actualWidth / 2)
                player.y = net.y + (net.actualHeight / 2)

    for net in nets:
        net.drawBack()

    player.draw()
    # player.lookRay()

    if (player.actualX() > boatX and player.actualX() < boatX + 300
            and player.actualY() > (-player.depth - 140) and player.actualY() <
        (-player.depth - 140 + 150)):
        explosion = Explosion.explosion(screen, boatX, -player.depth - 140)
        explosion.explodeP1(boatX, -player.depth - 140)
        boatX = 100000
        explosion.explodeP2(boatX, -player.depth - 140)
        actualWon = True

    for net in nets:
        net.drawFront()

    pygame.draw.rect(
        screen, black,
        pygame.Rect(width / 20, (height * 2 / 5) - 50, width / 10,
                    (height / 5) + 50))
    pygame.draw.rect(
        screen, (0, 0, 255),
        pygame.Rect((width / 20) + (width / 100),
Esempio n. 27
0
class Rabbit():
	pygame.mixer.pre_init(44100, -16, 2, 1024)
	pygame.mixer.init()

	def __init__(self, id = -1, name = "", color = (255, 255, 255), objectList = [], spriteList = [], fake = False, x = 0, y = 0):
		self.objectList = objectList
		self.spriteList = spriteList

		self.rabbitList = []

		self.fake = fake

		self.color = color
		self.rect = pygame.Rect(x, y, 43, 32)
		self.rabbitAnim = Animation("rabbit", 30)
		self.rabbitAnim.updateColor(self.color)
		self.rabbitAnim.setFrameRange(1, 8);

		self.sprite = pygame.sprite.RenderPlain(self.rabbitAnim)

		self.rabbitAnim.stopAnim()

		self.screen = pygame.display.get_surface()
		self.area = self.screen.get_rect()
		self.area.h += 500
		self.area.y -= 550
		self.area.w -= 200

		self.floorLevel = self.screen.get_height() - self.rect.h

		self.explosion = Explosion()

		self.movingLeft = False
		self.movingRight = False
		self.movingUp = False
		self.movingDown = False
		self.isJumping = False
		self.isOnBlock = False

		self.direction = "left"

		self.collide = False

		self.touched = False
		self.touchDelay = 0

		self.id = id
		self.name = name

		self.jumpSound = pygame.mixer.Sound("resources/sound/jump.wav")
		self.splashSound = pygame.mixer.Sound("resources/sound/splash.wav")
		self.carrotSound = pygame.mixer.Sound("resources/sound/carrot.wav")

		self.jumpSound.set_volume(float(Resources.getOptionValue("sound"))/100)
		self.splashSound.set_volume(float(Resources.getOptionValue("sound"))/100)
		self.carrotSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.velocity = 5
		self.gravity = 0.6

		self.movePos = [0,0.01]

		self.replaceRabbit()

		self.points = 0
		self.carrots = 0

		self.currentFriction = self.getFloorFriction()

		self.thrownCarrots = []

		self.blood = Resources.getOptionValue("blood")

	def __str__(self):
		print "Rabbit ", self.id,  ": ", self.name

	def update(self):
		if not self.fake:
			if self.touched:
				self.touchDelayCalculation()

			else:
				if self.movingLeft == True:
					self.movePos[0] = -self.velocity

				if self.movingRight == True:
					self.movePos[0] = self.velocity

			if self.movePos[1] is not 0:
				self.movePos[1] += self.gravity
				self.rect.y += self.movePos[1]

				if self.rect.y > self.floorLevel:
					self.rect.y = self.floorLevel
					self.movePos[1] = 0
					self.isJumping = False

			if self.movePos[1] < 0:
				self.movingUp = True
				self.movingDown = False

			elif self.movePos[1] > 0:
				self.movingUp = False
				self.movingDown = True

			else:
				self.movingUp = False
				self.movingDown = False

			self.checkForCollision()

			newpos = self.rect.move(self.movePos)

			if self.area.contains(newpos) and not self.collide:
				self.rect = newpos

			if self.isJumping:
				self.rabbitAnim.setFrameRange(9, 15)
				if self.movingUp:
					self.rabbitAnim.stopAnim()
					self.rabbitAnim.setCurrentFrame(9)
				else:
					self.rabbitAnim.playAnim(False)

			else:
				self.rabbitAnim.setFrameRange(1, 8)
				if not self.movingLeft and not self.movingRight:
					self.rabbitAnim.stopAnim()
					self.rabbitAnim.rewind()
				else:
					self.rabbitAnim.playAnim()

		self.rabbitAnim.getRect().x = self.rect.x
		self.rabbitAnim.getRect().y = self.rect.y - 16

		tmpThrownCarrots = []

		for c in self.thrownCarrots:
			end = c.update()

			if not end:
				tmpThrownCarrots.append(c)

		self.thrownCarrots = tmpThrownCarrots

		self.sprite.update()
		self.sprite.draw(self.screen)
		self.rabbitAnim.update()
		self.explosion.update()

		pygame.event.pump()

	def collisionDetection(self, obj, rabbit = False):
		if self.movingLeft:
			if (self.rect.x < (obj.rect.x + obj.rect.w)) and (obj.rect.x < self.rect.x):
				if (self.rect.y + self.rect.h) > (obj.rect.y + 1):
					if self.rect.y < (obj.rect.y + obj.rect.h):
						self.movePos[0] = 0

		if self.movingRight:
			if (obj.rect.x < (self.rect.x + self.rect.w)) and (obj.rect.x > self.rect.x):
				if (self.rect.y + self.rect.h) > (obj.rect.y + 1):
					if self.rect.y < (obj.rect.y + obj.rect.h):
						self.movePos[0] = 0

		if self.movingUp:
			if (self.rect.y <= (obj.rect.y + obj.rect.h)) and (obj.rect.y <= self.rect.y):
				if (self.rect.x + self.rect.w) > (obj.rect.x + 3):
					if self.rect.x < (obj.rect.x + obj.rect.w - 5):
						self.movePos[1] = 0.01

		if ((self.rect.y + self.rect.h) >= obj.rect.y) and (self.rect.y <= obj.rect.y):
			if (self.rect.x + self.rect.w) > (obj.rect.x + 3):
				if self.rect.x < (obj.rect.x + obj.rect.w - 5):
					if self.movePos[1] >= 0 and not self.isOnBlock:
						self.isJumping = False
						
						if rabbit:
							self.jump(5)
							if self.blood == 1:
								obj.explosion = Explosion(obj.rect.x, obj.rect.y, obj.color)
								obj.explosion.startExplosion()
								self.splashSound.play()
							obj.replaceRabbit()
							self.points += 1

						elif obj.getType() == "boing":
							self.jump(12.7)

						else:
							self.rect.y = obj.rect.y - self.rect.h
							self.movePos[1] = 0
							self.isOnBlock = True

		if self.isJumping:
			self.isOnBlock = False

		if self.isOnBlock:
			if (self.rect.x > (obj.rect.x + obj.rect.w)) or ((self.rect.x + self.rect.w) < obj.rect.x):
				self.isOnBlock = False
				self.movePos[1] = 0.01

	def checkForCollision(self):
		if not self.movingLeft and not self.movingRight and self.movePos[1] == 0 and self.velocity == 0 and not self.isJumping:
			return

		for obj in self.objectList:
			if obj.getType() == "carrot" and obj.isInBlock(self.rect.x + self.rect.w/2, self.rect.y + self.rect.h -5):
				self.carrotSound.play()
				self.carrots += 1
				self.objectList.remove(obj)
				self.spriteList.remove(obj)

			if obj.getType() is not "carrot":
				self.collisionDetection(obj, False)

		for rabbit in self.rabbitList:
			self.collisionDetection(rabbit, True)

	def jump(self, velocity = 8.1):
		if not self.isJumping:
			self.jumpSound.play()
			self.movePos[1] = -velocity
		self.isJumping = True

	def moveLeftStart(self):
		if self.rabbitAnim.getFlip():
			self.rabbitAnim.flipAnim()
		self.rabbitAnim.playAnim()
		self.movingLeft = True
		self.movingRight = False
		self.direction = "left"

	def moveLeftStop(self):
		if not self.movingRight:
			self.rabbitAnim.stopAnim()
			self.rabbitAnim.rewind()
		self.movingLeft = False
		self.movePos[0] = 0

	def moveRightStart(self):
		if not self.rabbitAnim.getFlip():
			self.rabbitAnim.flipAnim()
		self.rabbitAnim.playAnim()
		self.movingRight = True
		self.movingLeft = False
		self.direction = "right"
	
	def moveRightStop(self):
		if not self.movingLeft:
			self.rabbitAnim.stopAnim()
			self.rabbitAnim.rewind()
		self.movingRight = False
		self.movePos[0] = 0

	def appendRabbit(self, rabbit):
		self.rabbitList.append(rabbit)

	def replaceRabbit(self):
		self.touched = False
		
		while True:
			randObj = self.objectList[random.randint(1, len(self.objectList)) - 1]
			if self.isFloor(randObj):
				break

		self.rect.topleft = (randObj.rect.x, randObj.rect.y - randObj.rect.h)

	def isInBlock(self, x, y):
		for obj in self.objectList:
			if obj.isInBlock(x, y):
				return True

		return False

	def isFloor(self, object):
		if self.isInBlock(object.getX() + 5, object.getY() - 5):
			return False

		return True

	def getFloorFriction(self):
		return 0.7

	def touch(self):
		self.touched = True
		self.touchDelay = 180
		TOUCH = USEREVENT + 1
		touchevent = pygame.event.Event(TOUCH)
		pygame.event.post(touchevent)

	def touchDelayCalculation(self):
		self.touchDelay -= 1

		if(self.touchDelay == 0):
			self.touched = False
			UNTOUCH = USEREVENT + 2
			untouchevent = pygame.event.Event(UNTOUCH)
			pygame.event.post(untouchevent)

	def isTouched(self):
		return self.touched

	def throwCarrot(self):
		if(self.carrots > 0):
			if(self.direction == "right"):
				self.thrownCarrots.append(Carrot(self.direction, self.rect.x + 10, self.rect.y, self.objectList, self.rabbitList))
			else:
				self.thrownCarrots.append(Carrot(self.direction, self.rect.x, self.rect.y, self.objectList, self.rabbitList))
			self.carrots -= 1

	def updateColor(self, color):
		self.rabbitAnim.updateColor(color)

	def getId(self):
		return self.id

	def getName(self):
		return self.name

	def getPoints(self):
		return self.points

	def getCarrots(self):
		return self.carrots

	def getAnim(self):
		return self.rabbitAnim

	def setId(self, id):
		self.id = id

	def setName(self, name):
		self.name = name

	def setPoints(self, points):
		self.points = points
Esempio n. 28
0
	def __init__(self, id = -1, name = "", color = (255, 255, 255), objectList = [], spriteList = [], fake = False, x = 0, y = 0):
		self.objectList = objectList
		self.spriteList = spriteList

		self.rabbitList = []

		self.fake = fake

		self.color = color
		self.rect = pygame.Rect(x, y, 43, 32)
		self.rabbitAnim = Animation("rabbit", 30)
		self.rabbitAnim.updateColor(self.color)
		self.rabbitAnim.setFrameRange(1, 8);

		self.sprite = pygame.sprite.RenderPlain(self.rabbitAnim)

		self.rabbitAnim.stopAnim()

		self.screen = pygame.display.get_surface()
		self.area = self.screen.get_rect()
		self.area.h += 500
		self.area.y -= 550
		self.area.w -= 200

		self.floorLevel = self.screen.get_height() - self.rect.h

		self.explosion = Explosion()

		self.movingLeft = False
		self.movingRight = False
		self.movingUp = False
		self.movingDown = False
		self.isJumping = False
		self.isOnBlock = False

		self.direction = "left"

		self.collide = False

		self.touched = False
		self.touchDelay = 0

		self.id = id
		self.name = name

		self.jumpSound = pygame.mixer.Sound("resources/sound/jump.wav")
		self.splashSound = pygame.mixer.Sound("resources/sound/splash.wav")
		self.carrotSound = pygame.mixer.Sound("resources/sound/carrot.wav")

		self.jumpSound.set_volume(float(Resources.getOptionValue("sound"))/100)
		self.splashSound.set_volume(float(Resources.getOptionValue("sound"))/100)
		self.carrotSound.set_volume(float(Resources.getOptionValue("sound"))/100)

		self.velocity = 5
		self.gravity = 0.6

		self.movePos = [0,0.01]

		self.replaceRabbit()

		self.points = 0
		self.carrots = 0

		self.currentFriction = self.getFloorFriction()

		self.thrownCarrots = []

		self.blood = Resources.getOptionValue("blood")
Esempio n. 29
0
    def cleanWindow(self):
        self.screen.blit(self.background, (0, 0))


if __name__ == '__main__':
    game = PulseGame()

    # Game loop
    while True:
        # 60Hz framerate
        game.clock.tick(60)
        game.render()
        for event in pygame.event.get():
            if event.type == QUIT:
                sys.exit()
            elif event.type == MOUSEBUTTONDOWN and event.button == 1:
                if game.gameRunning:
                    # Only creating a pulse when the number of pulses left i sufficient
                    if game.levelManager.pulses > 0:
                        # Creating explosion
                        game.gameObjects.addEntity(
                            Explosion.Explosion(
                                game.fileManager,
                                game.levelManager.currentLevel().scale,
                                pygame.mouse.get_pos()))
                        game.gameObjects.updateNotifierPulses(-1)
                        game.fileManager.playPulse()
                else:
                    # Checking menu mouse over (gameRunning False means menu!)
                    game.menues.mouseClicked(pygame.mouse.get_pos())