示例#1
0
    def update(self):
        global x, y

        if self.type == 1:
            x,y = self.plant_bullet()
        elif self.type == 2:
            x,y = self.Tree_bullet()
        elif self.type ==3:
            x,y = self.Bomb_bullet()

        if gobj.collides_box(self, self.target):        #플레이어 or 쉴드 충돌
            if player.Player.checkShiled(self.target):  #쉴드 충돌
                self.remove()
                global GET_BULLET_TYPE , GET_COUNTER_ATTACK
                GET_BULLET_TYPE = self.type
                GET_COUNTER_ATTACK = True
            else:                                       #플레이어 충돌
                dead = player.Player.decrease_life(self.target)
                if dead:
                    game_state.sound_wav(6)
                    game_state.endGame()
                self.coll_img()
                self.remove()
                if self.type == 3:
                    game_state.sound_wav(2)
        if gobj.collides_box(self,self.back):
            self.coll_img()
            self.remove()
            if self.type == 3:
                game_state.sound_wav(2)
        if x > get_canvas_width() or x< 0 or y > get_canvas_height()+300 or y < 0: #화면 밖 제거
            self.remove()
def check_boss(boss):
    global boss_die, boss_ox, state
    for b in gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(b, boss):
            boss_dead = boss.decrease_life(b.Power)
            if boss_dead:
                effect.Effect(boss.x, boss.y, 1).generate()
                for i in range(30):
                    Item(boss.x, boss.y + 100, 0, 0).generate()
                wav_boss_dead.play()
                if boss_ox < 200: score.score += 5000
                if boss_ox > 200 and boss_ox < 220: score.score += 3000
                if boss_ox > 220 and boss_ox < 300: score.score += 1500
                boss.remove()
                boss_die = True
            b.remove()

    for bb in gfw.world.objects_at(gfw.layer.boss_bullet):
        for b in gfw.world.objects_at(gfw.layer.bullet):
            if LaserBullet.Shoot_state == 2:
                if gobj.collides_box(bb, b):
                    bb.remove()
        if gobj.collides_box(bb, player):
            player.damage_ox = True
            bb.remove()
            player_dead = player.decrease_life()
            player_hit_wav.play()
            if player_dead:
                state = END_GAME
        if boss_die: bb.remove()
示例#3
0
    def update(self):
        global x,y
        if self.type == 1:
            x,y = self.plant_bullet()
        elif self.type == 2:
            x,y = self.Tree_bullet()
        elif self.type ==3:
            x,y = self.Bomb_bullet()
        if x > get_canvas_width() or x< 0 or y > get_canvas_height()+300 or y < 0:
            self.remove()
        global en_layer

        for i in range(len(en_layer)):           #몬스터 충돌
            self.en = en_layer[i]
            if gobj.collides_box(self, self.en):
                enemy.Enemy.remove(self.en)
                game_state.updateScore()
                self.remove()
                if self.type == 3:
                    game_state.sound_wav(2)
                else:
                    game_state.sound_wav(3)
        if gobj.collides_box(self,self.back):
            self.remove()
            if self.type == 3:
                game_state.sound_wav(2)
示例#4
0
    def update(self):
        global layer, layer_p, back
        layer_p = list(gfw.world.objects_at(
            gfw.layer.plat))  # 맵이 넘어갈때로 if문 걸었으면 좋겟다
        self.time += gfw.delta_time
        frame = self.time * 15
        if self.type == 1 or self.type == 2:
            self.fidx = int(frame) % 11
        elif self.type == 3:
            self.fidx = int(frame) % 5
        x, y = self.pos

        for i in range(len(layer_p)):  # 벽돌 충돌처리
            self.plat = layer_p[i]
            if gobj.collides_box(self, self.plat):
                self.landon = True
        if gobj.collides_box(self, self.back):
            self.landon = True
            a, b = self.back.pos
            y = b + 50

        if self.landon == False:
            y -= PLAYER_GRAVITY * self.mass
        self.pos = (x, y)
        self.find_player()
示例#5
0
def check_S2_to_spine():
    for missile in gfw.world.objects_at(gfw.layer.missile):
        if gobj.collides_box(skill_w, missile):
            gfw.world.remove(missile)
            break

    for spine in gfw.world.objects_at(gfw.layer.spine):
        if gobj.collides_box(skill_w, spine):
            gfw.world.remove(spine)
            break
示例#6
0
    def move_to_target(self):
        x,y = self.pos
        self.speed = 100
        self.update_position()

        if self.ball != None:

            collides = gobj.collides_box(self, self.ball)

            if collides and gfw.world.count_at(gfw.layer.ball)>0:
                Monster.Items = True

                #gfw.world.remove(self.ball)
                #self.ball = None
                Monster.cc.append((x,y))

                if len(Monster.cc) ==1:
                    self.action = 'Dead'
                    self.time = 0
                else:
                    self.ball = None
                    for (a, b) in Monster.cc:
                        if (a, b) != (x, y):
                            self.action = 'Dead'
                            self.time = 0



        collides = gobj.collides_box(self, self.player)
        if collides:
            self.action = 'Dead'
            Monster.Items = False

            dead = self.player.decrease_life()
            if dead:
                Monster.Over = True
                self.remove()


        if Monster.Over == True:
            self.remove()



        for (px, py) in self.PAT_POSITIONS:
            dsq = (px-x)**2 + (py- y)**2
            if dsq < Monster.CHASE_DISTANCE_SQ ** 2:
                return BehaviorTree.SUCCESS
            else:
                return BehaviorTree.RUNNING
示例#7
0
def check_enemy(e):
    if gobj.collides_box(player, e):
        print('Player Collision', e)
        e.remove()
        return

    for b in gfw.gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(b, e):
            # print('Collision', e, b)
            dead = e.decrease_life(b.power)
            if dead:
                score.score += e.level * 10
                e.remove()
            b.remove()
            return
示例#8
0
def check():
    global game_over, clear_flag, clear_time

    for bullet in gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(bullet, boss):
            gfw.world.remove(bullet)
            Bullet.BULLET_NUM -= 1
            if boss.get_shield() == False:
                boss.hit()
            else:
                boss.set_shield_alpha()

    if cheat_active == False:
        if gobj.collides_box(player, boss):
            if player.die_value == 0:
                player.die()
                diebg.set_death_img_to_die()
                print("당신은 죽었습니다")

        for pattern in gfw.world.objects_at(gfw.layer.rock):
            if player.die_value == 0:
                if gobj.collides_box(player, pattern):
                    player.die()
                    diebg.set_death_img_to_die()
                    print("당신은 죽었습니다")

        for pattern in gfw.world.objects_at(gfw.layer.beam):
            if player.die_value == 0:
                if gobj.collides_box(player, pattern):
                    player.die()
                    diebg.set_death_img_to_die()
                    print("당신은 죽었습니다")
        for pattern in gfw.world.objects_at(gfw.layer.leaf):
            if player.die_value == 0:
                if gobj.collides_box(player, pattern):
                    player.die()
                    diebg.set_death_img_to_die()
                    print("당신은 죽었습니다")
        if game_over == False:
            if player.get_die_value() == 1:
                player.die()
                diebg.set_death_img_to_die()
                print("당신은 죽었습니다")
                game_over = True

    if boss.get_boss_die() != 0:
        if clear_flag == 0:
            clear_flag = 1
示例#9
0
def check_jelly():
    for jelly in gfw.world.objects_at(gfw.layer.jelly):
        if gobj.collides_box(player, jelly):
            gfw.world.remove(jelly)
            global score
            score += 100
            break
示例#10
0
def S4_effect():
    for jelly in gfw.world.objects_at(gfw.layer.jelly):
        if gobj.collides_box(skill_g, jelly):
            gfw.world.remove(jelly)
            global score
            score += 100
            break
示例#11
0
def check_item(i):  # item과 충돌
    if gobj.collides_box(student, i):
        if student.status_invisible is True:    # 투명화 상태에서는 다른 item 먹을 수 없음
            return
        if i.type == 1:     # 투명화
            collide_i_wav.play()
            student.invisible_time = 5
            student.status_invisible = True
            student.image = student.image2
            if student.status_angry is True:    # angry 상태에서 투명화되면 angry 효과 해제
                student.status_angry = False
                student.angry_time = 0
                student.fire = None
        if i.type == 2:     # 라이프
            if student.increase_life():  # life가 max인 경우 추가점수
                bonus_wav.play()
                score.score += 30
            else:
                collide_i_wav.play()
        if i.type == 3:     # 아드레날린 주사
            collide_i_wav.play()
            student.status_angry = True
            student.angry_time = 5
            student.fire = student.fire_image
        i.remove()
        return
    if i.y < -i.size + 50:
        i.remove()
示例#12
0
def is_win() -> bool:
    for platform in gfw.world.objects_at(gfw.layer.platform):
        if platform.type != Platformer.GOAL:
            continue
        if gobj.collides_box(player, platform):
            gfw.change(score_state)
            score_state.set_attempt(player.n_die)
示例#13
0
    def update(self):
        x, y = self.x, self.y
        dx, dy = self.delta

        if self.dir == 'w':
            x -= dx * gfw.delta_time
        elif self.dir == 'h':
            x += dx * gfw.delta_time
        y += dy * gfw.delta_time
        gravity = 3
        dy -= gravity
        print(y)
        self.x = x
        self.y = y
        self.delta = dx, dy

        if x < -10 or x > get_canvas_width() + 10 or y <= 90:
            gfw.world.remove(self)
            print('bullet count - %d' % len(ZombieBullet.bullets))

        if player.isCreate == True:
            if gobj.collides_box(self, self.player):
                gfw.world.remove(self)
                gfw.world.remove(self.player)
                player.isCreate = False
                gfw.change(menu_state)
示例#14
0
def check_spike():
    global n_collide
    for spike in gfw.world.objects_at(gfw.layer.spike):
        if gobj.collides_box(player, spike):
            player.die()
            player.death_sound.play()
            break
示例#15
0
def check_enemy_attack(eb):
    for eb in gfw.gfw.world.objects_at(gfw.layer.e_bullet):
        if gobj.collides_box(eb, player):
            attacked_bgm.play()
            player.life -= 5
            eb.remove()
            return
示例#16
0
def check_items():
    for item in gfw.world.objects_at(gfw.layer.item):
        if gobj.collides_box(player, item):
            gfw.world.remove(item)
            #player.check(item)
            #boss.check(item)
            break
示例#17
0
 def update(self):
     global POTALON, POTAL_TO_NEXT
     if POTALON:
         if gobj.collides_box(self, self.target):
             POTAL_TO_NEXT = True
         else:
             POTAL_TO_NEXT = False
示例#18
0
def check_collides_needle():
    global knight, hornet
    if hornet.ball is not None:
        if gobj.collides_distance(knight, hornet.ball):
            knight_damaged_by(hornet.ball)
    elif hornet.th_needle is not None:
        if gobj.collides_box(knight, hornet.th_needle):
            knight_damaged_by(hornet.th_needle)
示例#19
0
def check_obsBoss():
    for boss in gfw.world.objects_at(gfw.layer.boss):
        if boss.hit: continue
        if gobj.collides_box(player, boss):
            if boss.action in ['run']:
                boss.hit = True
                life.life -= boss.power
                obs_sound.play()
示例#20
0
def check_s_item():
    global at_speed, n_speed
    for s_item in gfw.world.objects_at(gfw.layer.s_item):
        if gobj.collides_box(player, s_item):
            at_speed = n_speed
            n_speed += 200
            gfw.world.remove(s_item)
            break
示例#21
0
def check_coin(e):
    if gobj.collides_box(player, e):
        print('Player Collision', e)
        coin.play()
        score.score += e.level * 10
        coin_gen.coin_count += 1
        e.remove()
        return
示例#22
0
def check_collision_plant_zombie():
    for p in gfw.world.objects_at(gfw.layer.plant):
        if p.name == 'CherryBomb' or p.state != plant.STATE_MOUNT:
            continue
        for zombie in gfw.world.objects_at(gfw.layer.zombie):
            if gobj.collides_box(p, zombie):
                p.collision_event(zombie.Att)
                zombie.collision_event(0)
示例#23
0
def check_enemy():
    global player

    for layer in range(gfw.layer.enemy, gfw.layer.throwing + 1):
        for obj in gfw.world.objects_at(layer):
            if gobj.collides_box(player, obj):
                player.decrease_hp()
                player.make_invincible(1)
                break
示例#24
0
    def move_to_player(self):
        self.set_target(self.player.pos)
        self.update_position()

        collides = gobj.collides_box(self, self.player)
        if collides:
            self.action = 'Dead'
            self.time = 0
        return BehaviorTree.SUCCESS
示例#25
0
def check_enemy(e):
	if gobj.collides_box(simon, e):
		print('Player Collision', e)
		simon.die()
		return

	for eb in gfw.world.objects_at(gfw.layer.enemy_bullet):
		if gobj.collides_box(eb, simon):
			print('Enemy Attack Collision', eb, simon)
			simon.die()
			eb.remove()
			return

	for b in gfw.world.objects_at(gfw.layer.bullet):
		if gobj.collides_box(b, e):
			print('Enemy Collision', b, e)
			e.die()
			b.remove()
			return
示例#26
0
def check_enemy(e):
    if gobj.collides_box(player, e):
        attacked_bgm.play()
        player.life -= 50
        print('몬스터와 충돌 hp -50감소', e)
        e.remove()
        return

    for b in gfw.gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(b, e):
            dead = e.decrease_life(b.power)
            if dead:
                score.score += e.level * 10
                player.skill += 50
                monster_bgm.play()
                e.remove()
                e.drop()
            b.remove()
            return
示例#27
0
def check_obstacles():
    for enemy in gfw.world.objects_at(gfw.layer.enemy):
        if enemy.hit: continue
        if gobj.collides_box(player, enemy):
            if not player.state == 5:
                if not player.get_super():
                    player.state = 5
                    ui.player_colide()
                    effect_obs.play(1)
                enemy.hit = True
def check_enemy(e):
    global state
    if gobj.collides_box(player, e):
        e.remove()
        player.damage_ox = True
        player_dead = player.decrease_life()
        player_hit_wav.play()
        score.score -= e.level * 1000
        if player_dead:
            state = END_GAME

    for b in gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(b, e):
            enemy_dead = e.decrease_life(b.Power)
            if enemy_dead:
                effect.Effect(e.x, e.y, 0).generate()
                score.score += e.level * 100
                wav_mon_die.play()
                e.remove()
            b.remove()
示例#29
0
def check_player(e):
    if gobj.collides_box(player, e):
        wav_playerhit.play()
        e.remove()
        if player.decrease_life():
            player.reset_powerlevel()
            item = PowerUP(e.x, e.y)
            gfw.world.add(gfw.layer.item, item)
            player.regen()
        else:
            end_game()
def check_enemy(e):
    dead = False
    for b in gfw.gfw.world.objects_at(gfw.layer.bullet):
        if gobj.collides_box(b, e) and not dead:
            dead = e.decrease_life(b.power)
            if dead:
                enemy_die_wav.play()
                e.action = 'Dead'
                e.do_dead()
            b.remove()
            return