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)
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))
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
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
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]
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))
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
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
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))
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