コード例 #1
0
class EnemyTower(GameObject):
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        # 1 load image
        self.image_urls = [
            "assets/images/sprite/enemy/tower/tower1.png",
            "assets/images/sprite/enemy/tower/tower2.png",
            "assets/images/sprite/enemy/tower/tower3.png",
            "assets/images/sprite/enemy/tower/tower4.png"
        ]
        self.renderer = Animation(self.image_urls, True)
        self.frame_counter = FrameCounter(100)

    def update(self):
        self.frame_counter.run()
        if self.frame_counter.expired:
            for game_object in game_objects:
                if type(game_object) == Player:
                    pygame.mixer.Channel(4).play(
                        pygame.mixer.Sound("music/player/tower shoot.wav"))
                    bullet_enemy = BulletEnemy(11 * 16, 15 * 16, game_object.x,
                                               game_object.y)

                    add(bullet_enemy)
                    self.frame_counter.reset()

    def render(self, canvas):
        GameObject.render(self, canvas)
コード例 #2
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     self.image = pygame.image.load("images/player-bullet.png")
     self.box_collider = BoxCollider(40, 40)
     self.velocity = (0, 0)
     self.returning = False
     self.counter = FrameCounter(60)
コード例 #3
0
ファイル: animation.py プロジェクト: duchoa117/Project1BK
class Animation:
    def __init__(self, image_urls, loop=False, frame_delay=3):
        self.images = [
            pygame.image.load(image_url) for image_url in image_urls
        ]
        self.image_index = 0
        self.finished = False
        self.frame_counter = FrameCounter(frame_delay)
        self.loop = loop

    def render(self, canvas, x, y):
        if not self.finished or self.loop:
            # 1 Display current image
            current_image = self.images[self.image_index]
            width = current_image.get_width()
            height = current_image.get_height()
            render_pos = (x - width / 2, y - height / 2)
            canvas.blit(current_image, render_pos)

            # 2 Run frame counter
            self.frame_counter.run()

            # 3 If frame counter expires, change image
            if self.frame_counter.expired:
                self.frame_counter.reset()
                if self.image_index < len(self.images) - 1:
                    self.image_index += 1
                elif self.loop:
                    self.image_index = 0
                else:
                    self.finished = True
コード例 #4
0
 def __init__(self, x, y, input_manager):
     GameObject.__init__(self, x, y)
     self.image = pygame.image.load('image/player.png')
     self.input_manager = input_manager
     self.shoot_lock = False
     self.counter = FrameCounter(30)
     self.hp = 10
コード例 #5
0
class Carrot(GameObject):
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.box_collider = BoxCollider(64, 32)
        self.renderer = Animation([
            "images/carrot_animation/carrot1.png",
            "images/carrot_animation/carrot2.png",
            "images/carrot_animation/carrot3.png",
            "images/carrot_animation/carrot4.png",
            "images/carrot_animation/carrot5.png",
            "images/carrot_animation/carrot6.png"
        ],
                                  loop=True)
        self.spawn_counter = FrameCounter(50)

    def update(self):
        GameObject.update(self)
        self.spawn_counter.run()
        if self.spawn_counter.expired:
            self.x -= 20
            self.deactivate_if_needed()
            # self.spawn_counter.reset()
        else:
            self.x -= 0

    def deactivate_if_needed(self):
        if self.x + 64 < 0:
            self.spawn_counter.reset()
            self.deactivate()
コード例 #6
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     self.renderer = Animation(["images/warning_sign.png"], loop=True)
     self.box_collider = BoxCollider(64, 64)
     self.count = FrameCounter(50)
     pygame.mixer.Channel(3).play(
         pygame.mixer.Sound("music/warning (1).wav"))
コード例 #7
0
class GameEvent(game_object.GameObject):
    def __init__(self):
        game_object.GameObject.__init__(self, 0, 0)
        self.delay = FrameCounter(random.randint(200, 300))

        self.platform_spawner = PlatformSpawner()
        game_object.add(self.platform_spawner)

        self.platform_flying_spawner = PlatformFlyingSpawner()
        game_object.add(self.platform_flying_spawner)
        self.platform_flying_spawner.counter.expired = True

        self.carrot_spawner = CarrotSpawner()
        game_object.add(self.carrot_spawner)

        self.items_spawner = ItemsSpawner()
        game_object.add(self.items_spawner)

    def update(self):

        self.delay.run()
        if self.delay.expired:
            self.platform_spawner.counter_blank.reset()
            self.platform_flying_spawner.counter.reset()
            self.delay.reset()
コード例 #8
0
ファイル: animation.py プロジェクト: yukishioriii/pygame_proj
class Animation:
    def __init__(self, images_url, loop=False):
        self.images = [
            pygame.image.load(images_url) for images_url in images_url
        ]
        self.image_index = 0
        self.finished = False
        self.frame_counter = FrameCounter(10)
        self.loop = loop

    def render(self, canvas, x, y):
        if not self.finished or self.loop:
            current_image = self.images[self.image_index]
            width = current_image.get_width()
            height = current_image.get_height()
            render_pos = (x - width / 2, y - height / 2)
            canvas.blit(current_image, render_pos)

            self.frame_counter.run()

            if self.frame_counter.expired:
                self.frame_counter.reset()
                if self.image_index < len(self.images) - 1:
                    self.image_index += 1
                elif self.loop:
                    self.image_index = 0
                else:
                    self.finished = True
コード例 #9
0
 def __init__(self):
     GameObject.__init__(self, 0, 0)
     self.counter_continue = FrameCounter(20)
     self.counter_blank = FrameCounter(game_object.blank_time)
     self.renderer = None
     self.is_spawning = True
     self.counter_blank.expired = True
コード例 #10
0
ファイル: animation.py プロジェクト: yukishioriii/pygame_proj
 def __init__(self, images_url, loop=False):
     self.images = [
         pygame.image.load(images_url) for images_url in images_url
     ]
     self.image_index = 0
     self.finished = False
     self.frame_counter = FrameCounter(10)
     self.loop = loop
コード例 #11
0
ファイル: animation.py プロジェクト: duchoa117/Project1BK
 def __init__(self, image_urls, loop=False, frame_delay=3):
     self.images = [
         pygame.image.load(image_url) for image_url in image_urls
     ]
     self.image_index = 0
     self.finished = False
     self.frame_counter = FrameCounter(frame_delay)
     self.loop = loop
コード例 #12
0
 def __init__(self, x, y, input_manager):
     GameObject.__init__(self, x, y)
     self.input_manager = input_manager
     self.shoot_lock = False
     self.counter = FrameCounter(30)
     self.renderer = PlayerAnimator()
     self.dx = 0
     self.dy = 0
コード例 #13
0
 def __init__(self, x, y, input_manager):
     GameObject.__init__(self, x, y)
     self.input_manager = input_manager
     self.image = pygame.image.load("images/player/player1.png")
     self.counter1 = FrameCounter(120)
     self.counter2 = FrameCounter(120)
     self.has_shoot1 = True
     self.has_shoot2 = True
     self.dog_count = 0
     self.box_collider = BoxCollider(70, 70)
コード例 #14
0
class Player(GameObject):

    def __init__(self, x, y, input_manager):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load('image/player.png')
        self.input_manager = input_manager
        self.shoot_lock = False
        self.counter = FrameCounter(30)
        self.hp = 10

    def update(self):
        GameObject.update(self)

        self.move()
        self.shoot()

    def move(self):
        dx = 0
        dy = 0

        if self.input_manager.right_pressed:
            if self.x + 3 > 775:
                dx = 0
            else:
                dx += 3
        if self.input_manager.left_pressed:
            if self.x - 3 < 27:
                dx = 0
            else:
                dx -= 3
        if self.input_manager.down_pressed:
            if self.y + 3 > 600:
                dy = 0
            else:
                dy += 3
        if self.input_manager.up_pressed:
            if self.y - 3 < 40:
                dy = 0
            else:
                dy -= 3

        self.x += dx
        self.y += dy

    def shoot(self):
        if self.input_manager.x_pressed and not self.shoot_lock:
            game_object.recycle(PlayerBullet, self.x, self.y - 40)
            self.shoot_lock = True

        if self.shoot_lock:
            self.counter.run()
            if self.counter.expired:
                self.shoot_lock = False
                self.counter.reset()
コード例 #15
0
 def update(self):
     GameObject.update(self)
     self.frame_counter.run()
     if tower_defense.game_object.hasTower == True:
         if self.frame_counter.flag:
             tower_defense.game_object.hasEnemy = True
             enemy = Enemy(425, 0)
             add(enemy)
             self.frame_counter.reset()
         if tower_defense.game_object.score >= 60 and tower_defense.game_object.score < 65:
             self.frame_counter = FrameCounter(15)
コード例 #16
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     # 1 load image
     self.image_urls = [
         "assets/images/sprite/enemy/tower/tower1.png",
         "assets/images/sprite/enemy/tower/tower2.png",
         "assets/images/sprite/enemy/tower/tower3.png",
         "assets/images/sprite/enemy/tower/tower4.png"
     ]
     self.renderer = Animation(self.image_urls, True)
     self.frame_counter = FrameCounter(100)
コード例 #17
0
class EnemySpawner(GameObject):
    def __init__(self):
        GameObject.__init__(self, 0, 0)
        self.counter = FrameCounter(100)  # 2 / 0.017

    def update(self):
        self.counter.run()
        if self.counter.expired:
            enemy = Enemy(100, 0)
            game_object.add(enemy)
            self.counter.reset()
コード例 #18
0
class Enemy(GameObject):
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load("images/enemy/bacteria1.png")
        self.box_collider = BoxCollider(40, 40)
        self.counter = FrameCounter(70)
        self.returning = False
        self.velocity = (0, 0)
        self.pushed = False

        # not stun
        self.stun_timer = FrameCounter(20)
        self.stun_timer.count = 20

    def update(self):
        GameObject.update(self)
        self.move()

    def move(self):

        if self.stun_timer.expired:
            try:
                px, py = game_object.position
                distance = (get_distance((self.x, self.y), (px, py)))
                self.velocity = ((-px + self.x) / distance * -1,
                                 (-py + self.y) / distance * -1)
            except ZeroDivisionError:
                pass
        else:
            self.stun_timer.run()
            print(self.stun_timer.count)

        self.return_to_player()

        vx, vy = self.velocity
        # print(self.velocity)
        self.x += vx
        self.y += vy

    def return_to_player(self):
        if self.is_active and self.returning:
            try:
                px, py = game_object.position
                distance = (get_distance((self.x, self.y), (px, py)))
                # print(distance)
                self.velocity = ((-px + self.x) / distance * -4,
                                 (-py + self.y) / distance * -4)
            except ZeroDivisionError:
                pass

    def clean(self):
        self.velocity = (0, 0)
        self.returning = False
        self.pushed = False
コード例 #19
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     self.box_collider = BoxCollider(32, 32)
     self.renderer = PlayerAnimator()
     self.frame_counter = FrameCounter(120)
     self.counter = FrameCounter(120)
     self.black_screen = False
     self.dx = 0
     self.dy = 0
     self.win = False
     self.step = 8
     self.overlap = False
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load("images/enemy.png")
        self.box_collider = BoxCollider(100, 100)
        self.returning = False
        self.velocity = (0, 0)
        self.counter = FrameCounter(100)
        self.spawn_lock = False

        # not stun
        self.stun_timer = FrameCounter(90)
        self.stun_timer.count = 90
コード例 #21
0
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load("images/enemy/bacteria1.png")
        self.box_collider = BoxCollider(40, 40)
        self.counter = FrameCounter(70)
        self.returning = False
        self.velocity = (0, 0)
        self.pushed = False

        # not stun
        self.stun_timer = FrameCounter(20)
        self.stun_timer.count = 20
コード例 #22
0
class Shot1(GameObject):
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load("images/player-bullet.png")
        self.box_collider = BoxCollider(40, 40)
        self.velocity = (0, 0)
        self.returning = False
        self.counter = FrameCounter(60)

    def update(self):
        GameObject.update(self)
        self.move()
        self.physics()
        self.return_to_player()

    def move(self):
        self.vx, self.vy = self.velocity
        self.y += self.vy
        self.x += self.vx
        # self.counter.reset()
        self.counter.run()
        if self.counter.expired:
            self.returning = True
            self.counter.reset()

    def physics(self):
        if self.is_active:
            dog = game_object.collide_with(self.box_collider, Dog)
            if dog is not None:
                # self.deactivate()
                # dog.deactivate()
                self.returning = True
                dog.returning = True
                dog.stun_timer.reset()

            enemy = game_object.collide_with(self.box_collider, Enemy)
            if enemy is not None:
                self.returning = True
                enemy.returning = True

    def return_to_player(self):
        if self.is_active and self.returning:
            try:
                px, py = game_object.position
                distance = (get_distance((self.x, self.y), (px, py)))
                self.velocity = ((-px + self.x) / distance * -5,
                                 (-py + self.y) / distance * -5)
            except ZeroDivisionError:
                pass

    def clean(self):
        self.returning = False
        self.velocity = (0, 0)
コード例 #23
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     self.box_collider = BoxCollider(64, 32)
     self.renderer = Animation([
         "images/carrot_animation/carrot1.png",
         "images/carrot_animation/carrot2.png",
         "images/carrot_animation/carrot3.png",
         "images/carrot_animation/carrot4.png",
         "images/carrot_animation/carrot5.png",
         "images/carrot_animation/carrot6.png"
     ],
                               loop=True)
     self.spawn_counter = FrameCounter(50)
コード例 #24
0
 def __init__(self, x, y):
     GameObject.__init__(self, x, y)
     self.box_collider = BoxCollider(32, 32)
     self.renderer = EnemyAnimator()
     self.direct = True
     self.frame_counter = FrameCounter(120)
     self.black_screen = False
     self.counter = FrameCounter(120)
     self.dy = 8
     self.dx = 0
     self.overlap = False
     self.directory = [1, 2, 3, 4]
     self.step = 8
コード例 #25
0
class DogSpawner(GameObject):
  def __init__(self, x, y):
    GameObject.__init__(self, x, y)
    self.frame_counter = FrameCounter(700)

  def update(self):
    self.frame_counter.run()

    if self.frame_counter.expired:
      dog = self.spawn()
      self.frame_counter.reset()

  def spawn(self):
    return game_object.recycle(Dog, self.x, self.y)
コード例 #26
0
class BlackScreen(GameObject):
    def __init__(self, x=0, y=0):
        GameObject.__init__(self, x, y)
        self.counter = FrameCounter(120)
        self.frame_counter = FrameCounter(120)
        self.screen = True
        self.box_collider = BoxCollider(800, 640)

    def update(self):
        GameObject.update(self)
        self.counter.run()
        if self.counter.expired:
            self.frame_counter.run()
            self.screen = False
            if self.frame_counter.expired:
                self.screen = True
                self.counter.reset()
                self.frame_counter.reset()

    def render(self, canvas):
        if not self.screen:
            BLACK = (0, 0, 0)
            rect = (0, 0, 800, 640)
            pygame.draw.rect(canvas, BLACK, rect, 1)
            canvas.fill(BLACK)
コード例 #27
0
    def __init__(self, x, y):
        GameObject.__init__(self, x, y)
        self.image = pygame.image.load("images/doge.png")
        self.box_collider = BoxCollider(70, 70)
        self.returning = False
        self.velocity = (0, 0)
        self.counter = FrameCounter(200)
        self.spawn_lock = False
        self.run_setup = [(3, 0), (0, -3), (-3, 0), (0, 3)]

        # not stun
        self.stun_timer = FrameCounter(10)
        self.stun_timer.count = 10
        self.index = 0
コード例 #28
0
class CarrotSpawner(GameObject):
    def __init__(self):
        GameObject.__init__(self, 0, 0)
        self.image = None
        self.spawn_counter = FrameCounter(200)

    def update(self):
        self.spawn_counter.run()
        if self.spawn_counter.expired:
            ran_y = random.randint(200, 600)
            # print(warning_sign.x)
            game_object.recycle(WarningSign, 1200, ran_y)
            game_object.recycle(Carrot, 1365, ran_y)
            self.spawn_counter.reset()
コード例 #29
0
class EnemySpawner(GameObject):
    def __init__(self):
        GameObject.__init__(self, 0, 0)
        self.counter = FrameCounter(2 // 0.017)

    def update(self):
        self.counter.run()
        if self.counter.expired:
            enemy = self.spawn()
            # game_object.add(enemy)

            self.counter.reset()

    def spawn(self):
        return game_object.recycle(Enemy, 300, 100)
コード例 #30
0
class EnemySpawner(GameObject):
    def __init__(self, x, y):
        GameObject.__init__(self, 0, 200)
        self.frame_counter = FrameCounter(tower_defense.game_object.wave)

    def update(self):
        GameObject.update(self)
        self.frame_counter.run()
        if tower_defense.game_object.hasTower == True:
            if self.frame_counter.flag:
                tower_defense.game_object.hasEnemy = True
                enemy = Enemy(425, 0)
                add(enemy)
                self.frame_counter.reset()
            if tower_defense.game_object.score >= 60 and tower_defense.game_object.score < 65:
                self.frame_counter = FrameCounter(15)