def handle_event(self, e): pair = (e.type, e.key) if pair in Player.KEY_MAP: if e.type == SDL_KEYDOWN: self.state = State.Move if e.type == SDL_KEYUP: self.state = State.Idle self.delta = gobj.point_add(self.delta, self.KEY_MAP[pair]) elif pair == Player.KEYDOWN_SPACE: self.jump() self.state = State.Jump elif pair == Player.KEYDOWN_SHIFT: game_state.sound_wav(5) self.shieldon = True elif e.type == SDL_MOUSEBUTTONDOWN: if bullet.GET_COUNTER_ATTACK == True: self.state = State.Attack global target, time target = (e.x, get_canvas_height() - e.y - 1) self.fire_bullet(bullet.GET_BULLET_TYPE) bullet.GET_COUNTER_ATTACK = False time = 0 #self.shield() elif pair == Player.KEYDOWN_SHIFTOFF: self.shieldon = False if platforms.POTALON and platforms.POTAL_TO_NEXT: if e.type == SDL_KEYDOWN: if e.key == SDLK_w: game_state.updateMap() platforms.POTALON = False platforms.POTAL_TO_NEXT = False
def fire_bullet(self, bullet_type): global p self.bullet_type = bullet_type global target x, y = target if self.pos_x > x: dir = 'w' else: dir = 'h' p = bullet.Player_bullet(bullet_type, dir) gfw.world.add(gfw.layer.p, p) game_state.sound_wav(1)
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 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 decrease_life(self): game_state.sound_wav(4) self.life -= 1 return self.life <= 0