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