コード例 #1
0
    def shoot(self):
        # Get center of origin, for starting position of projectile
        centerx = self.rect.centerx
        centery = self.rect.centery

        snowball = projectile(centerx, centery)
        bullets.add(snowball)
コード例 #2
0
 def shoot(self, keys):
     if keys[pygame.K_SPACE]:
         if (time.clock() - self.last_attack) > self.base_attack_cd:
             self.lastshoot = time.clock()
             self.projectiles.append(
                 projectile(self.x, self.y, 'projectile.gif', self.facing,
                            self.projSpeed))
コード例 #3
0
ファイル: entity.py プロジェクト: ThingCollab/thinggame
	def update(self, tiles, entities, projectiles):
		if self.userControl:
		# Apply keyboard velocity
			if pygame.key.get_pressed()[K_RIGHT] or pygame.key.get_pressed()[K_d]: self.vel[0] =  5
			if pygame.key.get_pressed()[K_LEFT] or pygame.key.get_pressed()[K_a]: self.vel[0] = -5
		# Create Projectiles
			if (pygame.mouse.get_pressed()[0] or pygame.key.get_pressed()[K_z]) and not self.shooting:
				self.shooting = True
				vel = [mouse.get_pos()[0]-self.rect.centerx,mouse.get_pos()[1]-self.rect.centery]
				vel = vecMul(normalize(vel),[10,10])
				myProjectile = projectile(self, vel, entities, self.enemies)
				projectiles.add(myProjectile)
			elif not pygame.mouse.get_pressed()[0]: self.shooting = False
			
		# Do tile collision
		self.water = False
		self.lava = False
		for tile in tiles:
			if sprite.collide_rect(self, tile):
				if tile.type == 3: self.water = True
				if tile.type == 4: self.lava = True
		if self.water: self.vel = vecMul(self.vel, [0.25,0.25])
		if self.lava:
			self.health -= 10
			self.vel = vecMul(self.vel, [0.1,0.1])
		# Apply jumping velocity
		if self.userControl and pygame.key.get_pressed()[K_SPACE]:
			if self.ground: self.vel[1] -= 15
			if self.water: self.vel[1] -= 5
			if self.lava: self.vel[1] -= 1.5
		# Apply gravity, integrate position and do obstacle collision
		if not self.ground: self.vel[1] += 1;
		self.pos[0] += self.vel[0]
		self.rect.left = self.pos[0]
		self.obstacleCollide(self.vel[0], 0, tiles)
		self.pos[1] += self.vel[1]
		self.rect.top = self.pos[1]
		self.ground = False
		self.obstacleCollide(0, self.vel[1], tiles)
		# Do enemy collision
		for entity in entities:
			if self.userControl and any(entity.type == enemyType for enemyType in self.enemies) and sprite.collide_rect(self, entity):
				self.health -= entity.touchDamage
		if self.health <= 0:
			self.kill()
		# Reset horizontal velocity
		if self.userControl: self.vel[0] = 0
		else:
			if self.vel[0] < 0: self.vel[0] = -2
			else: self.vel[0] = 2	
コード例 #4
0
ファイル: entity.py プロジェクト: alextag/OLBAIDpy
 def cast(self, num, target):
     if self.skills[num] is None:
         return "NoSkill"
     if self.skills[num].onCD():
         return "CD"
     else:
         stat = self.skills[num].cast()
         if self.skills[num].effect == "heal":
             self.hp += stat
             if self.hp >self.mhp:
                 self.hp = self.mhp
             return "Done"
         elif self.skills[num].effect == "skillshot":
             return ["projectile",projectile(target,(self.rect.x,self.rect.y),self.skills[num].image,self,stat,self.speed+self.skills[num].speed)]
         self.casttimer = 20
コード例 #5
0
ファイル: entity.py プロジェクト: alextag/OLBAIDpy
 def attack(self, target):
     if self.attacktimer <= 0 and self.casttimer<=0:
         self.attacktimer = self.framerate*self.attackspeed
         if self.inv["main"] is None:
             return ["noWeapon"]
         if self.melee:
             pass
         else:
             tempx = target[0] - self.rect.x
             tempy = target[1] - self.rect.y
             if tempx != 0:
                 tempx = tempx/abs(tempx)
             if tempy != 0:
                 tempy = tempy/abs(tempy)
             self.look(tempx,tempy)
                                                     #Weapon rect kanonika.
             return ["projectile",projectile(target,(self.rect.x,self.rect.y),self.bullet,self,self.dmg,self.speed+0.5)]
     return [self.attacktimer]
コード例 #6
0
ファイル: player.py プロジェクト: forsaken1/game
	def fire(self, params):
		if self.game.c_ticks - self.last_fire_tick >= weapons[self.weapon].recharge:
			self.last_fire_tick = self.game.c_ticks
			v = point(params['dx'],params['dy'])
			self.weapon_angle = v.angle()
			self.game.projectiles.append(projectile(self, self.weapon,v))
コード例 #7
0
ファイル: entity.py プロジェクト: ThingCollab/thinggame
    def update(self, tiles, entities, projectiles):
        if self.userControl:
            # Apply keyboard velocity
            if pygame.key.get_pressed()[K_RIGHT] or pygame.key.get_pressed(
            )[K_d]:
                self.vel[0] = 5
            if pygame.key.get_pressed()[K_LEFT] or pygame.key.get_pressed(
            )[K_a]:
                self.vel[0] = -5
            # Create Projectiles
            if (pygame.mouse.get_pressed()[0]
                    or pygame.key.get_pressed()[K_z]) and not self.shooting:
                self.shooting = True
                vel = [
                    mouse.get_pos()[0] - self.rect.centerx,
                    mouse.get_pos()[1] - self.rect.centery
                ]
                vel = vecMul(normalize(vel), [10, 10])
                myProjectile = projectile(self, vel, entities, self.enemies)
                projectiles.add(myProjectile)
            elif not pygame.mouse.get_pressed()[0]:
                self.shooting = False

        # Do tile collision
        self.water = False
        self.lava = False
        for tile in tiles:
            if sprite.collide_rect(self, tile):
                if tile.type == 3: self.water = True
                if tile.type == 4: self.lava = True
        if self.water: self.vel = vecMul(self.vel, [0.25, 0.25])
        if self.lava:
            self.health -= 10
            self.vel = vecMul(self.vel, [0.1, 0.1])
        # Apply jumping velocity
        if self.userControl and pygame.key.get_pressed()[K_SPACE]:
            if self.ground: self.vel[1] -= 15
            if self.water: self.vel[1] -= 5
            if self.lava: self.vel[1] -= 1.5
        # Apply gravity, integrate position and do obstacle collision
        if not self.ground: self.vel[1] += 1
        self.pos[0] += self.vel[0]
        self.rect.left = self.pos[0]
        self.obstacleCollide(self.vel[0], 0, tiles)
        self.pos[1] += self.vel[1]
        self.rect.top = self.pos[1]
        self.ground = False
        self.obstacleCollide(0, self.vel[1], tiles)
        # Do enemy collision
        for entity in entities:
            if self.userControl and any(
                    entity.type == enemyType
                    for enemyType in self.enemies) and sprite.collide_rect(
                        self, entity):
                self.health -= entity.touchDamage
        if self.health <= 0:
            self.kill()
        # Reset horizontal velocity
        if self.userControl: self.vel[0] = 0
        else:
            if self.vel[0] < 0: self.vel[0] = -2
            else: self.vel[0] = 2
コード例 #8
0
os.environ['SDL_VIDEO_CENTERED'] = '1'

init()
running = True

screen = display.set_mode((1024, 704))
clock = time.Clock()

world = gameMap(0, 0, 1024, 702, 3)
world.mapgen(screen, 0, 0)

p1 = playerControl()
p2 = playerControl()
p1.spawn(32, 32)
p2.spawn(996, 672)
p1b1 = projectile(0)
p1b2 = projectile(1)
p1b3 = projectile(2)
p1b4 = projectile(3)
p1b5 = projectile(4)
p2b1 = projectile(0)
p2b2 = projectile(1)
p2b3 = projectile(2)
p2b4 = projectile(3)
p2b5 = projectile(4)

pList = [p1b1, p1b2, p1b3, p1b4, p1b5, p2b1, p2b2, p2b3, p2b4, p2b5]

blocks = world.get_wallist()

wDown = False
コード例 #9
0
 def shoot(self, keys):
     if keys[pygame.K_SPACE]:
         if (time.clock() - self.last_attack) > self.base_attack_cd:
             self.lastshoot = time.clock()
             self.projectiles.append(projectile(self.x, self.y, 'projectile.gif', self.facing, self.projSpeed))
コード例 #10
0
def update(keys):

    global shootLoop, score

    for obstacle in obstacles:
        if obstacle.visible == True:
            if ((ninja.hitbox2[1] < obstacle.hitbox[1] + obstacle.hitbox[3]
                 and ninja.hitbox2[1] + ninja.hitbox2[3] > obstacle.hitbox[1])
                    or
                (ninja.hitbox3[1] < obstacle.hitbox[1] + obstacle.hitbox[3] and
                 ninja.hitbox3[1] + ninja.hitbox3[3] > obstacle.hitbox[1])):
                if ((ninja.hitbox2[0] + ninja.hitbox2[2] > obstacle.hitbox[0]
                     and ninja.hitbox2[0] <
                     obstacle.hitbox[0] + obstacle.hitbox[2]) or
                    (ninja.hitbox3[0] + ninja.hitbox3[2] > obstacle.hitbox[0]
                     and ninja.hitbox3[0] <
                     obstacle.hitbox[0] + obstacle.hitbox[2])):
                    hitSound.play()
                    obstacle.hit()
                    score += 1

            if ninja.hitbox1[1] < obstacle.hitbox[1] + obstacle.hitbox[
                    3] and ninja.hitbox1[1] + ninja.hitbox1[
                        3] > obstacle.hitbox[1]:
                if ninja.hitbox1[0] + ninja.hitbox1[2] > obstacle.hitbox[
                        0] and ninja.hitbox1[
                            0] < obstacle.hitbox[0] + obstacle.hitbox[2]:
                    dieSound.play()
                    ninja.hit()
                    ninja.hitbox2 = (0, 0, 0, 0)
                    ninja.hitbox3 = (0, 0, 0, 0)

    if shootLoop > 0:
        shootLoop += 1
    if shootLoop > 10:
        shootLoop = 0

    if keys[pygame.K_SPACE] and shootLoop == 0:
        bulletSound.play()

        ninja.isProp = True
        ninja.standing = False

        if ninja.left:
            facing = -1
        else:
            facing = 1

        if len(bullets) < 20:
            bullets.append(
                projectile(round(ninja.x + 50), round(ninja.y + 50), facing))

        shootLoop = 1

    if keys[pygame.K_LEFT] and ninja.x > ninja.value:
        ninja.x -= ninja.value
        ninja.left = True
        ninja.right = False
        ninja.isProp = False
        ninja.standing = False
    elif keys[
            pygame.K_RIGHT] and ninja.x < 800 - ninja.width - 50 - ninja.value:
        ninja.x += ninja.value
        ninja.right = True
        ninja.left = False
        ninja.isProp = False
        ninja.standing = False
    elif keys[pygame.K_UP]:
        jumpSound.play()
        ninja.standing = False
    else:
        ninja.standing = True
        ninja.walkCount = 0

    if not (ninja.isJump):
        if keys[pygame.K_UP]:
            ninja.isJump = True
            ninja.right = False
            ninja.left = False
            ninja.isProp = False
    else:
        if ninja.jumpCount >= -10:
            ninja.y -= (ninja.jumpCount * abs(ninja.jumpCount)) * 0.5
            ninja.jumpCount -= 1
        else:
            ninja.isJump = False
            ninja.jumpCount = 10