Ejemplo n.º 1
0
    def shoot(self):
        """Allows player to shoot down the enemy. Issues one bullet and adds it to underlying sprite context."""
        if self.__hidden:
            return

        if self.context.playerCanShot:
            now = pygame.time.get_ticks()
            if now - self.__last_shot > Player.SHOOT_DELAY:
                self.__last_shot = now
                if self.__power == 1:
                    bullet = Bullet(self.rect.centerx, self.rect.top,
                                    self.__bullet_img, self.context)
                    self.__all_sprites.add(bullet)
                    self.__bullets.add(bullet)
                    random.choice(self.__soundResources.shoot_sounds).play()
                if self.__power >= 2:
                    bullet1 = Bullet(self.rect.left, self.rect.centery,
                                     self.__bullet_img, self.context)
                    bullet2 = Bullet(self.rect.right, self.rect.centery,
                                     self.__bullet_img, self.context)
                    self.__all_sprites.add(bullet1)
                    self.__all_sprites.add(bullet2)
                    self.__bullets.add(bullet1)
                    self.__bullets.add(bullet2)
                    random.choice(self.__soundResources.shoot_sounds).play()
Ejemplo n.º 2
0
 def attack(self):
     sounds.play("chop")
     selfCenterX = self.x + self.w / 2
     selfCenterY = self.y + self.h / 2
     theta = math.atan2(mouse.mouse['pos'][1] - selfCenterY,
                        mouse.mouse['pos'][0] - selfCenterX)
     return Bullet(selfCenterX - 5, selfCenterY - 5, 10, 10,
                   images.frenchFry, theta, self.dmg, "good")
Ejemplo n.º 3
0
 def _shoot(self):
     self.can_shoot -= 1
     if self.can_shoot == 0:
         self.can_shoot = 5
         if self.right.x != 0 or self.right.y != 0:
             bullet = Bullet((self.right.x, self.right.y), self.rect.center)
             self.bullet_group.add(bullet)
             self.fire_sound.play()
Ejemplo n.º 4
0
 def attack(self, target):
     selfCenterX = self.x + self.w / 2
     selfCenterY = self.y + self.h / 2
     theta = math.atan2((target.y + target.h / 2 - selfCenterY),
                        (target.x + target.w / 2 - selfCenterX))
     bW = 10 * self.dmg
     return Bullet(selfCenterX - bW / 2, selfCenterY - bW / 2, bW, bW,
                   pygame.transform.scale(images.marshmallow, (bW, bW)),
                   theta, self.dmg, "bad")
Ejemplo n.º 5
0
 def add_bullet(self, cursor):
     current_shot = dtime.now().timestamp()
     if (current_shot - self.last_shot) > self.timeout:
         start_x = self.player.x
         start_y = self.player.y + self.player.image_height
         new_bullet = Bullet(start_x, start_y, cursor.x - cursor.width,
                             cursor.y - cursor.height, self.background,
                             self.max_damage)
         self.bullets.append(new_bullet)
         self.last_shot = current_shot
Ejemplo n.º 6
0
    def shot(self):
        """Triggers enemy shot. Adds new bullet sprite in sprite context

        :return: None
        """
        now = pygame.time.get_ticks()
        if now - self.__last_shot > Enemy.SHOOT_DELAY:
            self.__last_shot = now
            bullet = Bullet(self.rect.centerx, self.rect.bottom, self.__bullet_img, 15)
            self.all_sprites.add(bullet)
            self.enemies_shots.add(bullet)
	def exitShooting(self):
		angSpeed = 20.0 + (40.0 * self.powerLevel)
		linSpeed = 80.0 + (320.0 * self.powerLevel)
		color = (0.7 + 0.1*random(), 0.7 + 0.1*random(), 0.7 + 0.1*random())

		dir = self.character.getDir()
		bullet = Bullet(self.world, base.render, color, (0.0, 0.0, 0.0), dir, 0.3, 80, self.character.node)
		bullet.body.setLinearVel(dir * linSpeed)
		bullet.body.setAngularVel(dir * angSpeed)

		self.gunSfx.play()
		self.meter.hide()
		base.taskMgr.remove("powerMeterGauge")

		# Recoil and camera flash
		self.recoil()
		self.character.recoil(12)
		self.world.game.cameraHandler.flash((1,1,1,0.5), 0.2)
Ejemplo n.º 8
0
def testing(event, view):
    player = view.player

    if not view.isinitialized:
        return
    view.screen.fill(BLACK)

    if view.tickcounter <= 30:
        view.player.onstart(view)

    view.tickcounter += 1
    if isinstance(event, Keyboard):
        view.currentDown[event.key] = 1

    if isinstance(event, KeyboardUp):
        view.currentDown[event.key] = 0

    shoot = ''
    v = VELOCITY if sum(view.currentDown.values()) > 1 else DVELOCITY
    for key in view.currentDown.keys():
        if view.currentDown[key]:
            if key == 119:
                player.movy(-v)
            if key == 115:
                player.movy(v)
            if key == 97:
                player.movx(-v)
            if key == 100:
                player.movx(v)
            if len(shoot) < 2:
                if key == 105:
                    shoot += 'N'
                if key == 107:
                    shoot += 'S'
                if key == 106:
                    shoot += 'W'
                if key == 108:
                    shoot += 'E'

    if shoot:
        if view.lastshot == 0:
            bullet = Bullet(player.position[0], player.position[1], shoot)
            view.spriteslist.add(bullet)
            view.lastshot += COOLDOWN
        else:
            view.lastshot -= 1

    view.spriteslist.update()
    game_surface = pygame.Surface(SCREENSIZE, pygame.SRCALPHA, 32)
    game_surface = game_surface.convert_alpha()
    view.spriteslist.draw(game_surface)

    view.skincount += 1 if view.tickcounter % 2 == 0 else 0
    if view.skincount > 2:
        view.skincount = 0

    # clear display
    # draw some words on the screen

    somewords = view.smallfont.render('This is a testing screen', True,
                                      (0, 255, 0))
    width, _ = pygame.font.Font.size(view.smallfont,
                                     'This is a testing screen')
    position_font = (SCREENSIZE[0] - width) / 2
    view.screen.blit(somewords, (position_font + 6, 0))

    view.screen.blit(game_surface, (0, 0))
    if view.tickcounter > 30:
        view.screen.blit(player.getskin(view.skincount), player.position)
    view.clock.tick(TPS)
    # flip the display to show whatever we drew

    pygame.display.flip()
Ejemplo n.º 9
0
 def fireBullet(self, posx, posy):
     # fire only if cooldown has finished
     now = pygame.time.get_ticks()
     if (now - self.lastShot) >= self.fireCooldown:
         self.lastShot = now
         self.bullets.append(Bullet(self.screen, posx, posy))
Ejemplo n.º 10
0
def level(view, event):
    player = view.player

    if not view.isinitialized:
        return

    view.screen.fill(BLACK)

    if view.tickcounter <= 30:
        view.player.onstart(view)

    view.tickcounter += 1
    if isinstance(event, Keyboard):
        view.currentDown[event.key] = 1

    if isinstance(event, KeyboardUp):
        view.currentDown[event.key] = 0

    shoot = ''

    v = VELOCITY if sum(view.currentDown.values()) > 1 else DVELOCITY
    for key in view.currentDown.keys():

        if view.currentDown[key]:
            if key == 119:
                player.movy(-v)
            if key == 115:
                player.movy(v)
            if key == 97:
                player.movx(-v)
            if key == 100:
                player.movx(v)
            if len(shoot) < 2:
                if key == 105:
                    shoot += 'N'
                if key == 107:
                    shoot += 'S'
                if key == 106:
                    shoot += 'W'
                if key == 108:
                    shoot += 'E'

    if shoot:
        if view.lastshot == 0:
            bullet = Bullet(player.position[0], player.position[1], shoot)
            view.spriteslist.add(bullet)
            view.lastshot += COOLDOWN
        else:
            view.lastshot -= 1


    view.skincount += 1 if view.tickcounter % 2 == 0 else 0
    if view.skincount > 2:
        view.skincount = 0
    playlist = [view.player.position]
    for idx,item in enumerate(view.spriteslist):
        item.update(view.skincount, playlist[idx%len(playlist)])

    if view.tickcounter > 50:
        for item in view.spriteslist:
            if isinstance(item, Bullet):
                for object in view.spriteslist:
                    if -20<item.rect[0]-object.rect[0]<20 and -20<item.rect[1]-object.rect[1]<20  and not isinstance(object, Bullet):
                        if isinstance(object, Grunt) or isinstance(object, Electrode) or isinstance(object, Hulk):
                            object.kill()
                        item.kill()
            if isinstance(item, Electrode) or isinstance(item, Grunt) or isinstance(item, Hulk):
                if -20<item.rect[0]-player.position[0]<20 and -20<item.rect[1]-player.position[1]<20:
                    view.lives -= 1
                    if view.lives > 0:
                        view.evManager.post(ChangeState(view.model.statem.peek() + 101))
                        return
                    else:
                        view.evManager.post(ChangeState(ENDGAME))
            if isinstance(item, Electrode):
                for object in view.spriteslist:
                    if -10 < item.rect[0] - object.rect[0] < 10 and -10 < item.rect[1] - object.rect[1] < 10 and not isinstance(object, Electrode):
                        if isinstance(object, Grunt):
                            object.kill()
            if isinstance(item, Mommies) or isinstance(item, Daddies) or isinstance(item, Mikeys):
                if -20 < item.rect[0] - player.position[0] < 20 and -20 < item.rect[1] - player.position[1] < 20:
                    score = item.die(view)
                    view.score += score

    gruntcount = sum(1 if isinstance(i, Grunt) else 0 for i in view.spriteslist)
    if gruntcount == 0:
        view.evManager.post(ChangeState(view.model.statem.peek() + 101))
        return

    view.spriteslist.draw(view.screen)



    if view.tickcounter > 30:
        player.getskin(view.skincount)
        view.screen.blit(player.getskin(view.skincount), player.position)


    view.clock.tick(TPS)
    # flip the display to show whatever we drew

    pygame.display.flip()
Ejemplo n.º 11
0
 def create_bullet(self, tank, model):
     bullet = Bullet(model, tank, self)
     self.current_level.bullets.add(bullet)