Example #1
0
 def shoot_arrow(self):
     new_arrow_sprite = Projectile(self.arrow_sprites[self.character.state],
                                   12, self.character.state, self)
     new_arrow_sprite.center_y = self.character.center_y
     new_arrow_sprite.center_x = self.character.center_x
     self.character_projectile_list.append(new_arrow_sprite)
     self.character.arrows -= 1
    def __init__(self, pos, board_dim, player_id):
        self.id = player_id

        self.pos = pos
        self.rotation = 0
        self.board_dim = board_dim
        self.shape_size = (len(self.shape_image[0]), len(self.shape_image))

        self.projectile = Projectile((0, 0), board_dim)
Example #3
0
 def reset(self):
     ObstacleGenerator.deadProjectiles = 0
     ObstacleGenerator.liveProjectiles = []
     ObstacleGenerator.liveObstacles = []
     ObstacleGenerator.deadObstacles = 0
     ObstacleGenerator.hits = 0
     ObstacleGenerator.prevT = pygame.time.get_ticks()
     ObstacleGenerator.fails = 0
     Obstacle.fails = 0
     ObstacleGenerator.p_out_of_bounds = 0
     Projectile.reset()
Example #4
0
 def click(self, event):
     if not self.good_shots:
         self.good_shots.append(
             Projectile(self.hero.x, self.hero.y, event.x + self.camera.x,
                        event.y + self.camera.y, 'Good_shots',
                        self.good_shots))
     print(event.x, event.y)
 def readGameControls(self):
     #read in events from queue - IN GAME CONTROLS
     for event in pygame.event.get():
         #on QUIT event, exit the game loop
         if event.type == pygame.QUIT:
             self.runningGame = False
         #if a key is pressed, act based on library definition
         elif event.type == pygame.KEYDOWN and event.key in self.key_map:
             self.key_map[event.key][0]()
         #if a key is released, act based on library definition
         elif event.type == pygame.KEYUP and event.key in self.key_map:
             self.key_map[event.key][1]()
         #if a space bar is pressed, fire the projectile
         #if p is pressed, pause the game
         elif event.type == pygame.KEYDOWN:
             self.keyPresses = pygame.key.get_pressed()
             #if a space bar is pressed, fire the projectile
             if self.keyPresses[K_SPACE] == 1:
                 self.bullet = Projectile(
                     [self.player.rect.x + 17, self.player.rect.y])
                 self.spriteList.add(self.bullet)
                 self.projectileList.add(self.bullet)
                 self.projectileSound.play()
             #if p is pressed, pause the game
             elif self.keyPresses[K_p] == 1:
                 self.pausedGame = not self.pausedGame
Example #6
0
 def launch_projectile(self):
     # instance projectile
     self.all_projectiles.add(Projectile(self))
     #demarer l'animation du lancer
     self.start_animation()
     #jouer le son
     self.game.sound_manager.play('tir')
Example #7
0
 def shoot(self, user, mousePos):
     currentTime = pygame.time.get_ticks()
     if currentTime - self.lastShot > self.weaponCooldown:
         direction = (mousePos[0] - user.pos[0], mousePos[1] - user.pos[1]) \
             if mousePos != user.pos else (1, 1)
         self.lastShot = currentTime
         user.projectiles.add(Projectile(user.pos,
                                         super().normalize_vector(direction),
                                         5, 2000, (0, 0, 255)))
Example #8
0
 def takeMoney(self, vertex):
     for v in self.nodes.getNeighbors(vertex):
         n = self.nodes[v]
         nv = self.nodes[vertex]
         n.changeVal(n.value - 1)
         # nv.changeVal(nv.value + 1)
         self.projectiles.append(
             Projectile((n.x, n.y), (nv.x, nv.y), vertex, n.color,
                        textures.projectile_t.copy(), 9))
Example #9
0
 def shoot_projectile(self):
     if self._current_charge >= self._cooldown:
         self._current_charge = 0
         projectile = Projectile(self._projectile_speed,
                                 self.x + self.size * sin(self.direction),
                                 self.y + self.size * cos(self.direction),
                                 self.direction, self._projectile_radius,
                                 self.tank_index)
         return projectile
Example #10
0
 def shoot(self, playerPos):
     currentTime = pygame.time.get_ticks()
     if currentTime - self.lastShot > self.weaponCooldown:
         direction = (playerPos[0] - self.pos[0],
                      playerPos[1] - self.pos[1])
         self.lastShot = currentTime
         self.projectiles.add(
             Projectile(self.pos, normalize_vector(direction), 3, 500,
                        (255, 0, 0)))
Example #11
0
 def shoot(self, user, mousePos):
     currentTime = pygame.time.get_ticks()
     if currentTime - self.lastShot > self.weaponCooldown:
         direction = (mousePos[0] - user.pos[0], mousePos[1] - user.pos[1]) \
             if mousePos != user.pos else (1, 1)
         self.lastShot = currentTime
         theta = math.radians(random.random()*self.spreadArc - self.spreadArc/2)
         projDir = super().rotate_vector(direction, theta)   
         user.projectiles.add(Projectile(user.pos,
                                         super().normalize_vector(projDir),
                                         6, 1000, (194, 54, 16)))
Example #12
0
 def buildTower(self, tower, loc):
     s = self.towerProps[tower]
     t = s['projectile']
     self.towers.append(
         Tower(
             s['range'], s['appearance'], s['fireRate'],
             Projectile(loc[0], loc[1], t['damage'], t['appearance'],
                        t['speed'], t['effects']), (loc[0], loc[1]),
             s['shop']))
     self.money -= s['cost']
     self.towerCanFire.append(False)
Example #13
0
 def shoot(self, user, mousePos):
     currentTime = pygame.time.get_ticks()
     if currentTime - self.lastShot > self.weaponCooldown:
         direction = (mousePos[0] - user.pos[0], mousePos[1] - user.pos[1]) \
             if mousePos != user.pos else (1, 1)
         self.lastShot = currentTime
         arcDifference = self.spreadArc / (self.projectilesCount - 1)
         for proj in range(self.projectilesCount):
             theta = math.radians(arcDifference*proj - self.spreadArc/2)
             projDir = super().rotate_vector(direction, theta)
             user.projectiles.add(Projectile(user.pos,
                                             super().normalize_vector(projDir),
                                             7, 500, (232, 144, 42)))
Example #14
0
def enemy_shoot():
    for enemy in enemies:
        if enemy.enemy_type == 1:
            if enemy.shoot_count[0] == fps * 4:
                enemy.get_direction(player.rect.x, player.rect.y)
                enemy_bullets.append(Projectile(enemy.rect.x, enemy.rect.y - 20, enemy.direction - 5, True))
                enemy.shoot_count[0] = 0
            else:
                enemy.shoot_count[0] += 1

    for bullet in enemy_bullets:
        all_sprites.add(bullet)
        bullet.update_enemy()
Example #15
0
 def shootMg(self, clickedVel):
     if self.base.counter % 10 == 0:
         targetVel = (clickedVel - self.getMuzzlePos()).normalize()
         shot = Projectile(
             self.getMuzzlePos(),
             targetVel,
             self.projectileSpeed * 2,
             "mg",
             (self.getMuzzlePos() - clickedVel).length(),
             False,
             2,
         )
         return shot
     return
Example #16
0
    def attack(self, player):
        if random.randint(1, 100) <= 5:
            xDisp = self.bounding_radius * cos((self.rot + 90) * pi / 180)
            yDisp = self.bounding_radius * sin((self.rot + 90) * pi / 180)

            projectile = Projectile(
                self.rot + 90, self.range, texture=self.projectileTexture,
                x=self.x + xDisp, y=self.y + yDisp)

            projectile.vt = 50
            self.projectiles.append(projectile)

        def update(self, dt, player):

            self.x += self.vx * dt
            self.y += self.vy * dt

            if self.poison != 0:
                self.health -= self.poison
                self.poisonTime -= dt
                self.rgba = (0, 1, 0, 1)
                if self.poisonTime < 0:
                    self.poison = 0
                    self.poisonTime = 0
                    self.rgba = (1, 1, 1, 1)

            if self.vx != 0 or self.vy != 0:
                if self.animTime > self.animRate:
                    if self.texture == resources.deathJellyImages[1]:
                        self.texture = resources.deathJellyImages[0]
                    else:
                        self.texture = resources.deathJellyImages[1]
                    self.animTime = 0
                else:
                    self.animTime += dt

            self.collideAngle = None
Example #17
0
 def shoot(self, clickedVel, type):
     if (not self.lOS): return
     targetVel = (clickedVel - self.getMuzzlePos()).normalize()
     if ((not self.base.readyToFire)
             or (self.pos - clickedVel).length() < self.generator.length()):
         return
     if type == "shell":
         shot = Projectile(self.getMuzzlePos(), targetVel,
                           self.projectileSpeed, "shell",
                           (self.pos - clickedVel).length())
         self.base.recoil(shot)
     elif type == "homing":
         shot = HomingProjectile(self.getMuzzlePos(), targetVel)
         self.base.homingCount -= 1
     self.base.readyToFire = False
     self.base.reloadCounter = 0
     return shot
Example #18
0
def shoot(add_bullet, rapid_temp):
    now = pygame.time.get_ticks()
    if add_bullet and now - player.last >= 1000/player.rapid:#(fps / player.rapid) == rapid_temp:
        bullets.append(Projectile(player.rect.x, player.rect.y, player.direction, True))
        player.last = pygame.time.get_ticks()
    if (fps / player.rapid) == rapid_temp:
        rapid_temp = 0
    for bullet in bullets:
        if bullet.rect.x > resolution[0] or bullet.rect.x < -50 or bullet.rect.y < -50 or bullet.rect.y > resolution[1] - level.image.get_height():
            if bullet.rect.y > resolution[1] - level.image.get_height():
                bullet.miss()
            bullets.pop(bullets.index(bullet))
            all_sprites.remove(bullet)
        else:
            bullet.update()
            all_sprites.add(bullet)
    rapid_temp += 1
    return rapid_temp
Example #19
0
def check_keys():
    """Check for key presses."""
    # one bullet at a time:
    global bullet_lag
    global weapons_lag
    if weapons_lag > 0:
        weapons_lag += 1
    if weapons_lag == 30:
        weapons_lag = 0

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

    keys = pg.key.get_pressed()

    if keys[pg.K_LEFT]:
        plyr.moveLeft()
    elif keys[pg.K_RIGHT]:
        plyr.moveRight(DISPLAY_SIZE[0])
    else:
        plyr.standing = True
    if keys[pg.K_UP] or plyr.isJump:
        plyr.jump()

    # When space bar is pressed, the bullet is fired based on direction of Player
    if keys[pg.K_SPACE]:
        if bullet_lag == 0:
            bullet_lag += 1
            facing = 1

            if len(bullets) < 5:  # This will make sure we cannot exceed 5 bullets on the screen at once
                bullets.append(
                    Projectile(round(plyr.x + plyr.width // 2), round(plyr.y + plyr.height // 2), plyr.weapon.radius, plyr.weapon.color,
                               plyr.weapon.vel, plyr.weapon.damage, facing))

    if keys[pg.K_q]:
        if weapons_lag == 0:
            weapons_lag += 1
            if plyr.weapon == pistol:
                plyr.weapon = big_gun
            else:
                plyr.weapon = pistol
Example #20
0
 def fireprojectile(self):
     newprojectile = Projectile(self.screen,
                                r'Assets\imgs\bullet1.png',
                                movespeed=-8,
                                startPosition=(self.currentPos[0],
                                               self.currentPos[1] - 14))
     mps = pygame.time.get_ticks() / 1000 - self.firedAt / 1000
     if self.currentAmmo > 0:
         if mps > 1 and self.currentAmmo < self.ammoMax:
             self.currentAmmo += 1
         if mps > .4:
             self.firedAt = pygame.time.get_ticks()
             SpaceShipSprite.liveProjectiles.append(newprojectile)
             self.currentAmmo -= 1
         else:
             self.action_status = -1
     else:
         if mps >= self.ammoCounter:
             self.currentAmmo = self.ammoMax
             self.fireprojectile()
         else:
             self.action_status = -1
Example #21
0
    def shoot(self, spawn_list, bullets, shot):
        self.is_shooting = True
        shot.play()
        if self.right is True:
            self.image = pygame.image.load('images/faces/drori_shoot_right.png')
        elif self.left is True:
            self.image = pygame.image.load('images/faces/drori_shoot_left.png')

        if self.left is True:
            direction = -1
            bullet_image = 'images/bullets/defaultbulletl.png'

        else:
            direction = 1
            bullet_image = 'images/bullets/defaultbullet.png'

        for child in spawn_list:
            if self.start_y + self.height > child.hit_box[1] and \
                    self.start_y < child.hit_box[1] + child.hit_box[2]:
                bullet_image = child.bullet

        bullets.append(Projectile(self.start_x + (self.width // 2), self.start_y
                                  + (self.height // 2), bullet_image, direction, bullets))
Example #22
0
def main():
    angle, vel, h0, time  = getInputs()

    win = GraphWin("Face", 600, 400)
    win.setCoords(0,0,30,30)


    objToTrack = Projectile(angle, vel, h0)
    p1 = Point(objToTrack.getX(),objToTrack.getY())

    circleTracker = Circle(p1, 0.3)
    circleTracker.setFill('red')
    circleTracker.draw(win)

    win.getMouse()

    px = objToTrack.getX()
    py = objToTrack.getY()
    while objToTrack.getY() >= 0:
        objToTrack.update(time)
        dx = objToTrack.getX() - px
        dy = objToTrack.getY() - py
        Circle(p1, 0.1).draw(win)
        p1.move(dx, dy)
        px = objToTrack.getX()
        py = objToTrack.getY()

    win.getMouse()
    win.close()
Example #23
0
def main():
    pygame.init()
    win = pygame.display.set_mode((1000, 720))
    pygame.display.set_caption("Colossal Man")
    clock = pygame.time.Clock()
    shootFreq = 0


    font = pygame.font.SysFont('comicsans', 30, True)

    running = True
    index = 0

    font1 = pygame.font.SysFont('comimcsans', 18)
    text = font1.render('Health: ', True, (0, 0, 0))

    def endScreen():
        font2 = pygame.font.SysFont('comimcsans', 100)
        text2 = font2.render('You Win !', True, (255, 0, 0))
        win.blit(text2, ((500 // 2) - (text.get_width() // 2), (500 // 2) - 50))

        pygame.display.update()
        i = 0

        while i < 150:
            pygame.time.delay(10)
            i += 1
        pygame.quit()
        subprocess.call("python " + "gameGUI.py")
        with open("currentLevel", "a") as f:
            f.truncate(0)

        quit()

    def redrawGameWindow():
        win.blit(bg, (0, 0))
        player.draw(win)

        for airEnemy in aeroEnemy:
            airEnemy.draw(win)

        for gob in enemies:
            gob.draw(win)

        for bullet in bullets:
            bullet.draw(win)

        for platform in platforms:
            platform.draw(win)
        # draw health
        win.blit(text, (25, 25))

        pygame.draw.rect(win, (0, 255, 0), (90, 25, player.health, 10))
        pygame.display.update()

    first = True
    breakLoop = False
    isBreak = False
    charAirEnemyLeft = True
    charEnemyLeft = True
    while running:
        # check if game is finished
        for gob in enemies:
            if gob.visible:
                charEnemyLeft = True
                break
            else:
                charEnemyLeft = False

        for airEnemy in aeroEnemy:
            if airEnemy.visible:
                charAirEnemyLeft = True
                break
            else:
                charAirEnemyLeft = False

        if not charAirEnemyLeft and not charEnemyLeft:
            print("bye bye")
            endScreen()

        # check if enemy attacked player
        for gob in enemies:
            if gob.visible:
                if abs(player.x - gob.x) < 30 and abs(player.y - gob.y) < 15:
                    player.health -= 1
        if player.health <= 0:
            gameover(win)

        c = 0

        if shootFreq > 0:
            shootFreq += 1
        if shootFreq > 5:
            shootFreq = 0

        clock.tick(27)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

        for bullet in bullets:
            if bullet.x > 1000 - bullet.vel or bullet.x < bullet.vel:
                bullets.pop(bullets.index(bullet))

            else:
                for gob in enemies:
                    if bullet.x in range(gob.x, gob.x + 20) and gob.visible:
                        if bullet.y + bullet.radius > gob.hitbox[1]:
                            gob.hit()
                            bullets.pop(bullets.index(bullet))
                for airEnemy in aeroEnemy:
                    if bullet.x in range(airEnemy.x, airEnemy.x + 20) and airEnemy.visible:
                        if abs(bullet.y + bullet.radius - airEnemy.hitbox[1]) < 35:
                            airEnemy.hit()
                            print(airEnemy.hitbox[1], bullet.y)
                    bullet.x += 5 * bullet.facing

        keys = pygame.key.get_pressed()

        if keys[pygame.K_SPACE] and shootFreq == 0:

            if player.left:
                facing = -1
            elif player.right:
                facing = 1
            else:
                facing = 1
            if len(bullets) < 6:
                bullets.append(
                    Projectile(round(player.x + player.width // 2), round(player.y + player.height // 2), 5, 4, facing))

        if keys[pygame.K_LEFT] and player.x > player.vel:
            player.x -= player.vel
            player.left = True
            player.right = False
            player.standing = False
        elif keys[pygame.K_RIGHT] and player.y < 1000 - player.vel:
            player.x += player.vel
            player.left = False
            player.right = True
            player.standing = False

        else:
            player.walkCount = 0
            player.standing = True

        if not player.isJump:
            if keys[pygame.K_UP]:
                player.isJump = True
        elif player.onPlatform and player.isJump:

            if player.jumpCount >= -10:
                if player.jumpCount < 0:
                    for i in range(int((player.jumpCount ** 2) * 0.5)):
                        player.y -= - 1
                        for platform in platforms:
                            if player.y == (platform.y - platform.width * 2) and player.x in range(platform.x,
                                                                                                   platform.x + platform.length) and platform != \
                                    platforms[index]:
                                index = platforms.index(platform)
                                player.jumpCount = 10
                                player.isJump = False
                                isBreak = True
                                player.y -= 5
                            if isBreak:
                                break
                else:
                    for i in range(int((player.jumpCount ** 2) * 0.5)):
                        player.y -= 1
                        for platform in platforms:
                            if player.y == (platform.y - platform.width * 2) and player.x in range(platform.x,
                                                                                                   platform.x + platform.length) and platform != \
                                    platforms[index]:
                                index = platforms.index(platform)

                                player.jumpCount = 10
                                player.isJump = False
                                isBreak = True
                                player.y -= 5
                            if isBreak:
                                break
                        if isBreak:
                            break
                if not isBreak:
                    player.jumpCount -= 1
                isBreak = False

            else:
                player.jumpCount = 10
                player.isJump = False

        # jump and check if on platform
        else:

            if player.jumpCount >= -10:
                if player.jumpCount < 0:
                    for i in range(int((player.jumpCount ** 2) * 0.5)):
                        player.y -= - 1
                        for platform in platforms:
                            if player.y == (platform.y - platform.width * 2) and player.x in range(platform.x,
                                                                                                   platform.x + platform.length):
                                index = platforms.index(platform)
                                player.isJump = False
                                player.onPlatform = True
                                breakLoop = True
                                player.jumpCount = 10
                                break
                        if breakLoop:
                            break

                else:
                    for i in range(int((player.jumpCount ** 2) * 0.5)):
                        player.y -= 1
                        for platform in platforms:
                            if player.y == (platform.y - platform.width * 2) and player.x in range(platform.x,
                                                                                                   platform.x + platform.length):
                                index = platforms.index(platform)
                                print(platforms.index(platform))
                                player.isJump = False
                                player.onPlatform = True
                                player.jumpCount = 10
                                breakLoop = True
                                break
                        if breakLoop:
                            break
                if not breakLoop:
                    player.jumpCount -= 1
            else:
                player.jumpCount = 10
                player.isJump = False

        breakLoop = False
        redrawGameWindow()
        if first:
            player.draw(win)
            first = False
        if player.onPlatform:
            c = 0
            breakout = False
            if platforms[index].x - 32 > player.x and not player.isJump or player.x > platforms[index].x + platforms[
                index].length - 16 and not player.isJump:
                print('beamed', player.isJump)

                while player.y < originalY:

                    player.y += 0.5

                    c += 0.5
                    for platform in platforms:
                        if player.y == (platform.y - platform.width * 2) and player.x in \
                                range(platform.x,
                                      platform.x + platform.length):
                            breakout = True
                            index = platforms.index(platform)
                            player.onPlatform = True

                    if c > 450 or breakout:
                        break
                if not breakout:
                    player.onPlatform = False
                    player.jumpCount = 10
                    player.isJump = False

    pygame.quit()
Example #24
0
	def shoot(self, player, fireballs):
		if self.coolDown > FRAMERATE * 2:
			self.coolDown = 0
			fireballs.append(Projectile(self.posXY, self.directionToPoint(player.posXY)))		
		self.coolDown += 2
		return fireballs
Example #25
0
from Projectile import Projectile
from time import sleep

startingVelocity = float(
    input("What is the initial velocity of the projective? "))
angle = float(input("What angle was the projectile launched at? "))
starting_height = float(input("What was the starting height of the object? "))

myProjectile = Projectile(startingVelocity, angle, starting_height, 1)

y_displacement = starting_height
seconds = 0
while myProjectile.secondly_motion(seconds)["y"] >= 0:
    myProjectile.secondly_motion(seconds)
    print("At t =", str(round(seconds, 2)), "seconds, x =",
          str(round(myProjectile.secondly_motion(seconds)["x"], 2)), "and y =",
          str(round(myProjectile.secondly_motion(seconds)["y"], 2)))
    seconds += 1
    sleep(1)
print("The ball hit the ground again at x =",
      round(myProjectile.find_delta_x(myProjectile.find_zero()), 2), "after",
      myProjectile.find_zero(), "seconds.")
Example #26
0
    def update(self):

        speed_mult = 1
        if self.keyboard.is_pressed("sprint"):
            speed_mult = 2

        if self.keyboard.is_pressed("dash"):
            if not self.dashing:
                self.change_y += 2
            self.dashing = True

        if self.keyboard.is_pressed("l"):
            pass
            # self.level.reset = True

        if self.keyboard.is_pressed("down"):
            self.change_y -= 0.1
            self.crawling = True
            speed_mult *= 0.5
        else:
            self.crawling = False

        if self.keyboard.is_pressed("attack"):
            if self.curr_attack_speed == 0:

                extra_y_dir = 0
                if self.keyboard.is_pressed("up"):
                    extra_y_dir = 4
                elif self.keyboard.is_pressed("down"):
                    extra_y_dir = -4

                attack_x = (self.change_x) * 4
                attack_y = (self.change_y + extra_y_dir) * 3
                attack_angle = int(
                    math.atan2(attack_y, attack_x) / math.pi * 180)

                card = Projectile(
                    Textures.SPRITESHEET[3 + int((attack_angle % 360) / 45) +
                                         16], self.center_x, self.center_y,
                    attack_x, attack_y)
                self.level.add_entity_to_list(card, self.level.entities)
                self.curr_attack_speed = self.max_attack_speed
                Sounds.play(Sounds.SHOOT)

        if self.curr_attack_speed > 0:
            self.curr_attack_speed -= 1

        if self.keyboard.is_pressed("jump"):
            if self.level.physics_engine.can_jump(1):
                # if self.level.engine.can_jump(self, 1):
                if not self.jumping:
                    Sounds.play(Sounds.JUMP)
                self.level.physics_engine.jump(self.jump_height)
                self.jumping = True
            # elif self.level.engine.can_jump(self, -1):
            elif self.level.physics_engine.can_jump(-1):
                self.jumping = False
                self.curr_jump_height = 0

            if self.curr_jump_height > self.max_jump_height:
                self.jumping = False
                self.curr_jump_height = 0

        elif self.curr_jump_height >= self.min_jump_height:
            self.jumping = False
            self.curr_jump_height = 0

        if self.jumping:
            self.change_y = self.jump_height
            self.curr_jump_height += self.jump_height

        if self.keyboard.is_pressed("left"):
            self.change_x = -self.movespeed * speed_mult
        elif self.keyboard.is_pressed("right"):
            self.change_x = self.movespeed * speed_mult
        else:
            if self.change_x > 1:
                self.change_x -= 1
                self.not_mirrored = True
            elif self.change_x < -1:
                self.change_x += 1
                self.not_mirrored = False
            else:
                self.change_x = 0

        if self.dashing:
            if self.change_x > 0:
                self.change_x = self.movespeed * speed_mult * 1.5
            elif self.change_x < 0:
                self.change_x = -self.movespeed * speed_mult * 1.5

            self.curr_dash_frame += 1
            if self.curr_dash_frame >= self.dash_frame_speed * len(
                    self.dash_textures):
                self.curr_dash_frame = 0
                self.dashing = False

        elif self.crawling:
            self.curr_crawl_frame += 1
            if self.curr_crawl_frame >= self.crawl_frame_speed * len(
                    self.crawl_textures):
                self.curr_crawl_frame = 0
        else:
            self.walk_count += 1
            if self.walk_count >= len(
                    self.walking_textures) * self.walk_frame_speed:
                self.walk_count = 0

        if self.curr_invis_frame > 0 and self.curr_invis_frame % 12 < 6:
            self.texture = Textures.get_texture(15, 15)
        elif self.change_x > 0:
            if self.dashing:
                self.texture = self.dash_textures[self.curr_dash_frame //
                                                  self.dash_frame_speed]
            elif self.crawling:
                self.texture = self.crawl_textures[self.curr_crawl_frame //
                                                   self.crawl_frame_speed]
            else:
                self.texture = self.walking_textures[self.walk_count //
                                                     self.walk_frame_speed]
            # self.player_dir = True

        elif self.change_x < 0:
            if self.dashing:
                self.texture = self.dash_textures_mirrored[
                    self.curr_dash_frame // self.dash_frame_speed]
            elif self.crawling:
                self.texture = self.crawl_textures_mirrored[
                    self.curr_crawl_frame // self.crawl_frame_speed]
            else:
                self.texture = self.walking_textures_mirrored[
                    self.walk_count // self.walk_frame_speed]
            # self.player_dir = False
        else:
            if self.not_mirrored:
                if self.crawling:
                    self.texture = self.crawl_textures[0]
                else:
                    self.texture = self.idle_texture
            else:
                if self.crawling:
                    self.texture = self.crawl_textures_mirrored[0]
                else:
                    self.texture = self.idle_texture_mirrored

        super().update()
Example #27
0
    def __init__(self):

        ## Resources:
        self.Soil = Resource("Soil Pile", "Common")
        self.Wood = Resource("Wood Block", "Common")
        self.Vine = Resource("Vine", "Common")
        self.Fruit = Resource("Fruit", "Common")
        self.Rock = Resource("Rock", "Common")
        self.Water = Resource("Water Supply", "Common")
        self.Sand = Resource("Sand Pile", "Common")
        self.Cacti = Resource("Cacti Block", "Common")
        self.Iron = Resource("Iron Nugget", "Uncommon")
        self.Bone = Resource("Bone", "Common")
        self.Diamond = Resource("Diamond", "Uncommon")
        self.Stone = Resource("Stone", "Common")
        self.Gold = Resource("Gold Nugget", "Uncommon")
        self.Emerald = Resource("Emerald", "Uncommon")
        self.Quartz = Resource("Quartz Shard", "Uncommon")
        self.Explosive = Resource("Explosive", "Common")

        ## Items:
        self.HarvesterArmor = Item("Harvester's Armor", None, "Rare")
        self.Protector = Item("Protector", None, "Legendary")
        self.Strawman = Item("Strawman", None, "Rare")
        self.Coffin = Item("Coffin", None, "Legendary")
        self.Ladder = Item("Ladder", None, "Rare")
        MobRepellant = Item("Mob Repellent", None, "Legendary")
        self.BottledWave = Item("Bottled Wave", None, "Rare")
        self.BottledWind = Item("Bottled Wind", None, "Legendary")
        self.Glider = Item("Glider", None, "Rare")
        self.Binoculars = Item("Binoculars", None, "Legendary")

        ## Projectiles:

        self.WoodenBall = Projectile("Wooden Ball", {"Wood": 5}, ["Arm"], 13,
                                     "Common")
        self.StoneBall = Projectile("Stone Ball", {
            "Wood": 5,
            "Stone": 2
        }, ["Arm"], 15, "Common")
        self.IronBall = Projectile("Iron Ball", {
            "Wood": 5,
            "IronIngot": 2
        }, ["Arm"], 17, "Common")
        self.DiamondBall = Projectile("Diamond Ball", {
            "Wood": 5,
            "Diamond": 2
        }, ["Arm"], 25, "Uncommon")
        self.WoodenArrow = Projectile("Wooden Arrow", {"Wood": 3},
                                      ["Bow", "CrossBow"], 17, "Common")
        self.StoneArrow = Projectile("Stone Arrow", {
            "Stone": 2,
            "Wood": 3
        }, ["Bow", "CrossBow"], 20, "Common")
        self.IronArrow = Projectile("Iron Arrow", {
            "IronIngot": 1,
            "Wood": 3
        }, ["Bow", "CrossBow"], 23, "Common")
        self.DiamondArrow = Projectile("Diamond Arrow", {
            "Diamond": 1,
            "Wood": 3
        }, ["Bow", "CrossBow"], 26, "Uncommon")
        self.SoilClump = Projectile("Soil Clump", {"Soil": 4},
                                    ["CombatBucket"], 38, "Common")
        self.SandClump = Projectile("Sand Clump", {"Sand": 4},
                                    ["CombatBucket"], 38, "Common")
        self.CactusClump = Projectile("Cactus Clump", {"Cacti": 2},
                                      ["CombatBucket"], 55, "Common")
        self.WoodSpike = Projectile("Wood Spike", {"Wood": 2}, ["Slingshot"],
                                    17, "Common")
        self.StoneSpike = Projectile("Stone Spike", {"Stone": 3},
                                     ["Slingshot"], 19, "Common")
        self.IronSpike = Projectile("Iron Spike", {
            "IronIngot": 1,
            "Wood": 1
        }, ["Slingshot"], 21, "Common")
        self.DiamondSpike = Projectile("Diamond Spike", {
            "Diamond": 1,
            "Wood": 1
        }, ["Slingshot"], 26, "Uncommon")
        self.CannonBall = Projectile("Cannon Ball", {
            "Wood": 10,
            "Stone": 15
        }, ["Cannon"], 125, "Common")
        self.Rocket = Projectile("Rocket", {
            "Iron": 15,
            "Explosive": 5
        }, ["RocketLauncher"], 150, "Rare")
        self.Missile = Projectile("Missile", {
            "Iron": 15,
            "Explosive": 10
        }, ["MissileLauncher"], 200, "Rare")

        ## Weapons:
        self.Arm = Weapon("Arm", None, "Range", 1, 90, None, 2, False,
                          "Common")
        self.Bow = Weapon("Bow", {
            "Wood": 8,
            "Vine": 1
        }, "Range", 1.25, 60, None, 3, False, "Common")
        self.Crossbow = Weapon("Crossbow", {
            "Wood": 10,
            "Vine": 2
        }, "Range", 1.25, 60, None, 3, True, "Common")
        self.CombatBucket = Weapon("Combat Bucket", {"IronIngot: 12"}, "Range",
                                   1.75, 100, None, 0, False, "Uncommon")
        self.Slingshot = Weapon("Slingshot", {
            "Wood": 8,
            "Vine": 1
        }, "Range", 0.75, 90, None, 1, False, "Common")
        self.Cannon = Weapon("Cannon", {
            "Iron": 1,
            "Wood": 200,
            "Explosive": 2
        }, "Range", 10, 100, None, 1, False, "Uncommon")
        self.RocketLauncher = Weapon("Rocket Launcher", {
            "Iron": 20,
            "Stone": 185,
            "Wood": 15,
            "Explosive": 6
        }, "Range", 25, 100, None, 6, True, "Rare")
        self.MissileLauncher = Weapon("Missile Launcher", {
            "Iron": 50,
            "Stone": 200,
            "Wood": 50,
            "Explosive": 8
        }, "Range", 40, 100, None, 8, True, "Legendary")
        self.Fists = Weapon("Fists", None, "Melee", 0.5, 100, 5, 0, None,
                            "Common")
        self.BoneBlade = Weapon("Bone Blade", {"Bone": 3}, "Melee", 1.25, 90,
                                10, 0, None, "Common")
        self.BoneStriker = Weapon("Bone Striker", {"Bone": 8}, "Melee", 1.25,
                                  90, 25, 0, None, "Uncommon")
        self.WoodenSword = Weapon("Wooden Sword", {"Wood": 8}, "Melee", 1, 80,
                                  17, 0, None, "Common")
        self.StoneSword = Weapon("Stone Sword", {
            "Stone": 10,
            "Wood": 3
        }, "Melee", 1, 80, 20, 0, None, "Common")
        self.IronSword = Weapon("Iron Sword", {
            "IronIngot": 10,
            "Wood": 3
        }, "Melee", 1, 80, 23, 0, None, "Uncommon")
        self.DiamondSword = Weapon("Diamond Sword", {
            "Diamond": 10,
            "Wood": 3
        }, "Melee", 1, 80, 26, 0, None, "Rare")
        self.WoodenAxe = Weapon("Wooden Axe", {"Wood": 9}, "Melee", 1.5, 70,
                                26, 0, None, "Common")
        self.StoneAxe = Weapon("Stone Axe", {
            "Stone": 10,
            "Wood": 4
        }, "Melee", 1.5, 70, 30, 0, None, "Common")
        self.IronAxe = Weapon("Iron Axe", {
            "IronIngot": 10,
            "Wood": 4
        }, "Melee", 1.5, 70, 34, 0, None, "Uncommon")
        self.DiamondAxe = Weapon("Diamond Axe", {
            "Diamond": 10,
            "Wood": 4
        }, "Melee", 1.5, 70, 38, 0, None, "Rare")
        self.WoodenSpear = Weapon("Wooden Spear", {"Wood": 10}, "Melee", 1.75,
                                  60, 30, 1, None, "Common")
        self.StoneSpear = Weapon("Stone Spear", {
            "Stone": 10,
            "Wood": 5
        }, "Melee", 1.75, 60, 35, 1, None, "Common")
        self.IronSpear = Weapon("Iron Spear", {
            "IronIngot": 10,
            "Wood": 5
        }, "Melee", 1.75, 60, 40, 1, None, "Uncommon")
        self.DiamondSpear = Weapon("Diamond Spear", {
            "Diamond": 10,
            "Wood": 5
        }, "Melee", 1.75, 60, 45, 1, None, "Rare")
        self.WoodenBoomerang = Weapon("Wooden Boomerang", {"Wood": 12},
                                      "Melee", 3, 90, 40, 2, None, "Common")
        self.StoneBoomerang = Weapon("Stone Boomerang", {
            "Stone": 10,
            "Wood": 6
        }, "Melee", 3, 90, 50, 2, None, "Common")
        self.IronBoomerang = Weapon("Iron Boomerang", {
            "IronIngot": 10,
            "Wood": 6
        }, "Melee", 3, 90, 60, 2, None, "Uncommon")
        self.DiamondBoomerang = Weapon("Diamond Boomerang", {
            "Diamond": 10,
            "Wood": 6
        }, "Melee", 3, 90, 70, 2, None, "Rare")
        self.Bomb = Weapon("Bomb", {
            "Stone": 25,
            "Wood": 25,
            "Explosive": 5
        }, "Melee", 15, 100, 100, 0, None, "Common")
        self.Grenade = Weapon("Grenade", {
            "Stone": 4,
            "Wood": 4,
            "Explosive": 2
        }, "Melee", 8, 100, 75, 0, None, "Common")
        self.Dynamite = Weapon("Dynamite", {"Explosive": 1}, "Melee", 1, 100,
                               50, None, False, "Common")

        ## Mobs:
        self.Fighter = Mob()
        self.Predator = Mob()
        self.Goblin = Mob()
        self.Destroyer = Mob()
        self.Annihilator = Mob()
        self.Troll = Mob()
        self.Raider = Mob()
        self.Minion = Mob()
        self.Zombie = Mob()
        self.Defender = Mob()
        self.Guardian = Mob()
        self.Skeleton = Mob()
        self.Hunter = Mob()
        self.Assasin = Mob()
        self.Ghoul = Mob()

        ## Animals:
        self.Chicken = Animal()
        self.Rabbit = Animal()
        self.Cow = Animal()
        self.Fish = Animal()
        self.Sheep = Animal()

        ## Biomes:
        self.Forest = Biome("Forest", "into a", self.Wood, self.Soil,
                            self.Soil, self.Fighter, self.Fighter,
                            self.Fighter, self.Chicken, None, None, "Common")
        self.Jungle = Biome("Jungle", "into a", self.Wood, self.Soil,
                            self.Emerald, self.Fighter, self.Fighter,
                            self.Predator, self.Chicken, None, None,
                            "Uncommon")
        self.Grove = Biome("Grove", "into a", self.Wood, self.Fruit,
                           self.Emerald, self.Fighter, self.Predator,
                           self.Fighter, self.Chicken, None, None, "Rare")
        self.Garden = Biome("Garden", "into a", self.Wood, self.Emerald,
                            self.Gold, self.Fighter, self.Predator,
                            self.Goblin, self.Chicken, self.HarvesterArmor,
                            self.Protector, "Legendary")
        self.Desert = Biome("Desert", "into a", self.Sand, self.Stone,
                            self.Stone, self.Destroyer, self.Destroyer,
                            self.Destroyer, self.Rabbit, None, None, "Common")
        self.Tundra = Biome("Tundra", "into a", self.Sand, self.Stone,
                            self.Iron, self.Destroyer, self.Destroyer,
                            self.Annihilator, self.Rabbit, None, None,
                            "Uncommon")
        self.Badland = Biome("Badland", "into a", self.Sand, self.Cacti,
                             self.Iron, self.Destroyer, self.Annihilator,
                             self.Destroyer, self.Rabbit, None, None, "Rare")
        self.Temple = Biome("Temple", "into a", self.Sand, self.Iron,
                            self.Diamond, self.Destroyer, self.Annihilator,
                            self.Troll, self.Rabbit, self.Strawman,
                            self.Coffin, "Legendary")
        self.Prairie = Biome("Prairie", "into a", self.Soil, self.Water,
                             self.Water, self.Raider, self.Raider, self.Raider,
                             self.Cow, None, None, "Common")
        self.Meadow = Biome("Meadow", "into a", self.Soil, self.Water,
                            self.Diamond, self.Raider, self.Raider,
                            self.Minion, self.Cow, None, None, "Uncommon")
        self.Swamp = Biome("Swamp", "into a", self.Soil, self.Vine,
                           self.Diamond, self.Raider, self.Minion, self.Raider,
                           self.Cow, None, None, "Rare")
        self.Fort = Biome("Fort", "into a", self.Soil, self.Diamond,
                          self.Quartz, self.Raider, self.Minion, self.Zombie,
                          self.Cow, self.Ladder, MobRepellant, "Legendary")
        self.Lake = Biome("Lake", "into a", self.Water, self.Sand, self.Water,
                          self.Defender, self.Defender, self.Defender,
                          self.Fish, None, None, "Common")
        self.Beach = Biome("Beach", "into a", self.Water, self.Sand, self.Gold,
                           self.Defender, self.Defender, self.Guardian,
                           self.Fish, None, None, "Uncommon")
        self.Island = Biome("Island", "onto an", self.Water, self.Bone,
                            self.Gold, self.Defender, self.Guardian,
                            self.Defender, self.Fish, None, None, "Rare")
        self.Shipwreck = Biome("Shipwreck", "into a", self.Water, self.Gold,
                               self.Emerald, self.Defender, self.Guardian,
                               self.Skeleton, self.Fish, self.BottledWave,
                               self.BottledWind, "Legendary")
        self.Mountain = Biome("Mountain", "onto a", self.Stone, self.Wood,
                              self.Sand, self.Hunter, self.Hunter, self.Hunter,
                              self.Sheep, None, None, "Common")
        self.Canyon = Biome("Canyon", "into a", self.Stone, self.Wood,
                            self.Quartz, self.Hunter, self.Hunter,
                            self.Assasin, self.Sheep, None, None, "Uncommon")
        self.Cave = Biome("Cave", "into a", self.Stone, self.Explosive,
                          self.Quartz, self.Hunter, self.Assasin, self.Hunter,
                          self.Sheep, None, None, "Rare")
        self.Monument = Biome("Monument", "into a", self.Stone, self.Iron,
                              self.Quartz, self.Hunter, self.Assasin,
                              self.Ghoul, self.Sheep, self.Glider,
                              self.Binoculars, "Legendary")

        ## Environments:
        self.Woodlands = Environment(self.Forest, self.Jungle, self.Grove,
                                     self.Garden)
        self.Plains = Environment(self.Desert, self.Tundra, self.Badland,
                                  self.Temple)
        self.Grasslands = Environment(self.Prairie, self.Meadow, self.Swamp,
                                      self.Fort)
        self.Waterlands = Environment(self.Lake, self.Beach, self.Island,
                                      self.Shipwreck)
        self.Rockylands = Environment(self.Mountain, self.Canyon, self.Cave,
                                      self.Monument)

        ## Player:
        self.Player = Character(
            "Player 1", 0, [], [],
            [[time() - COLLECT_DELAY for square in range(51)]
             for row in range(51)], 100, 100, {}, None, None, [26, 26],
            "North", time())

        ## Other:
        self.items = [eval("self." + item) for item in ITEMS
                      ]  #### Consider making this the inventory (0)
        #### self.biomes = [eval("self." + item) for item in BIOMES]

        ## Startup:
        self.startup()
Example #28
0
    cannon.shoot(projectile)

    rel_pos = []

    while projectile.pos[1] >= castle.pos[1]:
        physics.timestep(projectile)

        rel_pos.append(physics.distance(projectile, castle))

    scores = (2 - np.array(rel_pos)) / 2

    return max(scores) if len(rel_pos) > 0 else 0.0


ball = Projectile(2.0)

impulse = np.array([0.08, 0.05])

castle = Castle()

physics = Physics(0.001)

cannons = generateInitialPopulation(100)

for i in range(100):
    scores = []
    for cannon in cannons:
        scores.append(score(cannon))

    if i % 10 == 0:
Example #29
0
 def launch_projectile(self):
     # Création nouvelle instance de projectile
     self.all_projectiles.add(Projectile(self))
     self.start_anmation()
     # Jouer le son
     self.game.sound_manager.play("tir")
Example #30
0
    def keyLogger(self):

        keys = pygame.key.get_pressed()

        if self.shootLoop > 0:
            self.shootLoop += 1
        if self.shootLoop > 3:
            self.shootLoop = 0

        if (keys[pygame.K_LEFT] and self.x > 0):
            self.x = self.x - self.charSize
            self.left = True
            self.right = False
            self.standing = False

        if (keys[pygame.K_RIGHT]
                and self.x < self.width - (self.charSize + 20)):
            self.x = self.x + self.charSize
            self.left = False
            self.right = True
            self.standing = False

        if (keys[pygame.K_SPACE] and self.shootLoop == 0
                and len(self.bullets) < 5):

            self.bullet.play()

            if self.left:
                facing = -1

            else:
                facing = +1

            self.bullets.append(
                Projectile(self.x + self.charSize // 2,
                           self.y + self.charSize // 2, 6, (0, 0, 0), facing))

            self.shootLoop = 1

        else:
            self.standing = True
            self.walkCount = 0

        if keys[pygame.K_UP] and not self.inJump:
            self.inJump = True
            self.left = False
            self.right = False
            self.walkCount = 0

        if self.inJump:

            if self.JumpCount >= -10:

                if self.JumpCount < 0:
                    neg = -1

                else:
                    neg = 1

                self.y -= self.JumpCount**2 * 0.5 * neg
                self.JumpCount -= 1

            else:
                self.JumpCount = 10
                self.inJump = False
pygame.display.init()

width = 800
height = 800

framerate = 30  # frames/s
simulation_time_step = 0.01  # s

screen = pygame.display.set_mode((width, height))
screen.fill((255, 255, 255))
pygame.display.set_caption("Ballistic Trajectory Simulator")

projectile = Projectile(
    mass,
    radius,
    (initial_velocity[0], initial_velocity[1] * -1),
    (0, height / 2),
    drag_coefficient,
)

atmospheric_density = 1.225  # kg/m^3

simulating = True


async def simulation_loop():
    previous_time = datetime.datetime.now()
    global simulating
    while simulating:
        projectile.step(simulation_time_step, atmospheric_density,
                        scale_factor)
Example #32
0
        for event in pygame.event.get():
            if event.type == pygame.QUIT: sys.exit()
            elif event.type == pygame.KEYDOWN:
                if (event.key == pygame.K_UP or event.key == pygame.K_w):
                    man.direction("up")
                elif (event.key == pygame.K_DOWN or event.key == pygame.K_s):
                    man.direction("down")
                elif (event.key == pygame.K_RIGHT or event.key == pygame.K_d):
                    man.direction("right")
                elif (event.key == pygame.K_LEFT or event.key == pygame.K_a):
                    man.direction("left")
#-------------------------------------------------------------------------------
                if (event.key == pygame.K_SPACE):
                    if man.havePistol == True:
                        projectiles += [
                            Projectile(10, man.rect.center, man.heading,
                                       screenSize)
                        ]
                        if man.ammo > 0:
                            man.ammo -= 1
                        elif man.ammo <= 0:
                            man.ammo += 20
                        if man.ammo == 0 or man.ammo <= 0:
                            man.haveNothing = True
                            man.havePistol = False
                        print "Ammo:", man.ammo

#-----------------------------------------------------------------------------------

                    for zombie in zombies:
                        if man.haveStick:
                            if zombie.distToPoint(