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 handle_event(self, e): pair = (e.type, e.key) if pair in Player.KEY_MAP: if self.target is not None: self.target = None self.delta = 0, 0 pdx = self.delta[0] self.delta = gobj.point_add(self.delta, Player.KEY_MAP[pair]) dx = self.delta[0] self.action = \ 0 if dx < 0 else \ 1 if dx > 0 else \ 2 if pdx < 0 else 3 elif pair == Player.KEYDOWN_LSHIFT: self.mag *= 2 elif pair == Player.KEYUP_LSHIFT: self.mag //= 2 if e.type == SDL_MOUSEBUTTONDOWN: target = self.bg.translate(gobj.mouse_xy(e)) self.set_target(target) elif e.type == SDL_MOUSEMOTION: if self.target is not None: target = self.bg.translate(gobj.mouse_xy(e)) self.set_target(target)
def handle_event(self, e): pair = (e.type, e.key) if pair in Player.KEY_MAP: self.delta = gobj.point_add(self.delta, Player.KEY_MAP[pair]) elif pair == Player.KEYDOWN_LSHIFT: self.mag *= 2 elif pair == Player.KEYUP_LSHIFT: self.mag //= 2
def handle_event(self, e): pair = (e.type, e.key) if pair in Knight.KEY_MAP: self.knight.delta = gobj.point_add(self.knight.delta, Knight.KEY_MAP[pair]) elif pair == Knight.KEYUP_SPACE: dx, dy = self.knight.delta self.knight.delta = (dx, 0) self.knight.set_state(FallState) elif pair == Knight.KEYDOWN_d: self.knight.set_state(SlashState)
def handle_event(self, e): pair = (e.type, e.key) if pair in Simon.KEY_MAP: self.simon.delta = gobj.point_add(self.simon.delta, Simon.KEY_MAP[pair]) if e.type == SDL_KEYUP: return elif pair == Simon.KEYDOWN_SPACE: self.simon.shoot() self.simon.set_state(FireState) elif pair == Simon.KEYDOWN_C: self.simon.set_state(BackState) elif pair == Simon.KEYDOWN_X: self.simon.set_state(DyingState)
def handle_event(self, e): pair = (e.type, e.key) if pair in Knight.KEY_MAP: self.knight.delta = gobj.point_add(self.knight.delta, Knight.KEY_MAP[pair]) elif pair == Knight.KEYDOWN_SPACE: _, foot, _, _ = self.knight.get_bb() if self.knight.floor is not None: l, b, r, t = self.knight.floor.get_bb() if foot <= t: dx, dy = self.knight.delta dy = 15 self.knight.delta = (dx, dy) self.knight.set_state(JumpState) elif pair == Knight.KEYUP_SPACE: dx, dy = self.knight.delta if dy > 0: self.knight.delta = (dx, 0)
def handle_event(self, e): if e.type == SDL_KEYDOWN: if e.key == SDLK_ESCAPE: self.delta = 0, 0 if self.die_value == 1: return None pair = (e.type, e.key) #print(pair) if pair in Player.KEY_MAP: #버그 수정 부분 키 입력을 한 상태에서 씬에 들어오고 키를 때면 반대로 넘어가는걸 방지 if self.to_bug_solve_value_KEYUP_ISPRESSED == False: if pair[0] == SDL_KEYUP: self.to_bug_solve_value_KEYUP_ISPRESSED = True return self.to_bug_solve_value_KEYUP_ISPRESSED = True #수정부분 self.delta = gobj.point_add(self.delta, Player.KEY_MAP[pair]) dx, dy = self.delta self.state = \ 'Jump' if dy != 0 else \ 'Idle' if dx == 0 else \ 'Walk' if dx < 0 else \ 'Walk' if dx > 0 else \ 'Jump' if dx == -1: self.flip = 'h' elif dx == 1: self.flip = '' if pair in Player.SPECIAL_KEY_MAP: if Player.SPECIAL_KEY_MAP[pair] == 14: self.state = 'Attack' self.fire() elif Player.SPECIAL_KEY_MAP[pair] == 7: self.jump() elif Player.SPECIAL_KEY_MAP[pair] == 8: dx, dy = self.delta if (dy >= 0): self.delta = (dx, 0)
def handle_event(self, e): pair = (e.type, e.key) if pair in Player.KEY_MAP: if self.target is not None: self.target = None self.delta = 0, 0 pdx = self.delta[0] self.delta = gobj.point_add(self.delta, Player.KEY_MAP[pair]) dx = self.delta[0] self.action = \ 0 if dx < 0 else \ 1 if dx > 0 else \ 2 if pdx < 0 else 3 # print(dx, pdx, self.action) elif pair == Player.KEYDOWN_LSHIFT: self.mag *= 2 elif pair == Player.KEYUP_LSHIFT: self.mag //= 2 if e.type == SDL_MOUSEBUTTONDOWN: self.set_target((e.x, get_canvas_height() - e.y - 1)) elif e.type == SDL_MOUSEMOTION: if self.target is not None: self.set_target((e.x, get_canvas_height() - e.y - 1))
def move(self, diff): self.pos = gobj.point_add(self.pos, diff)
def handle_event(self, e): pair = (e.type, e.key) if pair in Player.KEY_MAP: self.delta = gobj.point_add(self.delta, Player.KEY_MAP[pair]) if self.state == Player.RUNNING: dx = self.delta[0] dy = self.delta[1] if dx < 0 and dy != 0: self.action = 1 self.fmax = 6 self.mirror = True elif dx > 0 and dy != 0: self.action = 1 self.fmax = 6 self.mirror = False elif dx > 0: self.action = 1 self.fmax = 6 self.mirror = False elif dx < 0: self.action = 1 self.fmax = 6 self.mirror = True elif dy > 0: self.action = 0 self.fmax = 8 self.mirror = False elif dy < 0: self.action = 2 self.fmax = 8 self.mirror = False else: self.fmax = 1 elif pair == Player.KEYDOWN_LSHIFT: self.mag *= 2 elif pair == Player.KEYUP_LSHIFT: self.mag //= 2 elif pair == Player.KEYDOWN_E: pass #self.menustate = False if self.menustate == True else True elif pair in Player.KEY_ITEM_MAP: self.iven_pos = Player.KEY_ITEM_MAP[pair] self.equip = self.inven[0][(self.iven_pos[0] - 573) // 64].item elif e.type == SDL_MOUSEBUTTONDOWN: player_xindex = (int)(self.pos[0] // 68) player_yindex = (int)((self.pos[1] - 20) // 82) if self.action == 0: self.x_tile = player_xindex self.y_tile = player_yindex + 1 elif self.action == 1: if self.mirror == True: self.x_tile = player_xindex - 1 self.y_tile = player_yindex else: self.x_tile = player_xindex + 1 self.y_tile = player_yindex else: self.x_tile = player_xindex self.y_tile = player_yindex - 1 if e.button == SDL_BUTTON_LEFT: self.mouse_pos = (e.x, get_canvas_height() - 1 - e.y) if self.equip in range( 1, 6 ) and self.state == Player.RUNNING and self.fmax == 1 and self.health > 0: self.equip = self.inven[0][(self.iven_pos[0] - 573) // 64].item self.state = self.equip self.health -= 5 if self.health < 0: self.health = 0 self.tool_effect_sound[self.state - 1].play() if self.equip == 1: if self.action == 1: self.fidex = 0 self.fmax = 4 else: self.fidex = 0 self.fmax = 5 elif self.equip == 2: if self.action == 0: self.fidex = 0 self.fmax = 4 else: self.fidex = 0 self.fmax = 5 elif self.equip == 3: if self.action == 1: self.fidex = 0 self.fmax = 4 else: self.fidex = 0 self.fmax = 5 elif self.equip == 4: if self.action == 2: self.fidex = 0 self.fmax = 5 else: self.fidex = 0 self.fmax = 7 elif self.equip == 5: self.fidex = 0 self.fmax = 3 if self.equip == 6: if self.farmtile[self.y_tile][ self.x_tile] == 1 or self.farmtile[self.y_tile][ self.x_tile] == 2: if self.farm_objects[self.y_tile][ self.x_tile].tile == 0: self.farm_objects[self.y_tile][ self.x_tile].tile = 4 self.farm_objects[self.y_tile][ self.x_tile].setgrowmaxlevel(5) self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() elif self.equip == 7: if self.farmtile[self.y_tile][ self.x_tile] == 1 or self.farmtile[self.y_tile][ self.x_tile] == 2: if self.farm_objects[self.y_tile][ self.x_tile].tile == 0: self.farm_objects[self.y_tile][ self.x_tile].tile = 5 self.farm_objects[self.y_tile][ self.x_tile].setgrowmaxlevel(5) self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() elif self.equip == 8: if self.farmtile[self.y_tile][ self.x_tile] == 1 or self.farmtile[self.y_tile][ self.x_tile] == 2: if self.farm_objects[self.y_tile][ self.x_tile].tile == 0: self.farm_objects[self.y_tile][ self.x_tile].tile = 6 self.farm_objects[self.y_tile][ self.x_tile].setgrowmaxlevel(6) self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() elif self.equip == 9: if self.farmtile[self.y_tile][ self.x_tile] == 1 or self.farmtile[self.y_tile][ self.x_tile] == 2: if self.farm_objects[self.y_tile][ self.x_tile].tile == 0: self.farm_objects[self.y_tile][ self.x_tile].tile = 7 self.farm_objects[self.y_tile][ self.x_tile].setgrowmaxlevel(6) self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() elif self.equip == 14: if self.current_map == COOP: for i in range(len(self.animals)): if self.animals[ i].name == 'chicken' and self.animals[ i].feed == False: animal_xindex = (int)(self.animals[i].pos[0] // 68) animal_yindex = (int)( (self.animals[i].pos[1] - 20) // 82) if (self.x_tile, self.y_tile) == ( animal_xindex, animal_yindex) or ( player_xindex, player_yindex) == (animal_xindex, animal_yindex): self.animals[i].feed = True self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() self.animals[i].sound.play() elif self.current_map == BARN: for i in range(len(self.animals)): if self.animals[i].name == 'cow' and self.animals[ i].feed == False: animal_xindex = (int)(self.animals[i].pos[0] // 68) animal_yindex = (int)( (self.animals[i].pos[1] - 20) // 82) if (self.x_tile, self.y_tile) == ( animal_xindex, animal_yindex) or ( player_xindex, player_yindex) == (animal_xindex, animal_yindex): self.animals[i].feed = True self.inven[0][(self.iven_pos[0] - 573) // 64].useItem() self.animals[i].sound.play() elif e.button == SDL_BUTTON_RIGHT: if self.farm_objects[self.y_tile][self.x_tile].tile in range( 4, 8): if self.farm_objects[self.y_tile][ self.x_tile].grow == self.farm_objects[ self.y_tile][self.x_tile].maxlevel: harvest = self.farm_objects[self.y_tile][ self.x_tile].tile + 6 ix, iy = self.seekinven(harvest) self.inven[iy][ix].giveItem(harvest, 1) self.farm_objects[self.y_tile][self.x_tile].tile = 0 self.sound_harvest.play() if self.current_map == COOP: for i in range(len(self.animals)): if self.animals[i].name == 'chicken' and self.animals[ i].product: animal_xindex = (int)(self.animals[i].pos[0] // 68) animal_yindex = (int)( (self.animals[i].pos[1] - 20) // 82) if (self.x_tile, self.y_tile) == ( animal_xindex, animal_yindex) or ( player_xindex, player_yindex) == (animal_xindex, animal_yindex): ix, iy = self.seekinven(15) self.inven[iy][ix].giveItem(15, 1) #15 self.animals[i].product = False if self.current_map == BARN: for i in range(len(self.animals)): if self.animals[i].name == 'cow' and self.animals[ i].product: animal_xindex = (int)(self.animals[i].pos[0] // 68) animal_yindex = (int)( (self.animals[i].pos[1] - 20) // 82) if (self.x_tile, self.y_tile) == ( animal_xindex, animal_yindex) or ( player_xindex, player_yindex) == (animal_xindex, animal_yindex): ix, iy = self.seekinven(16) self.inven[iy][ix].giveItem(16, 1) #15 self.animals[i].product = False self.sound_milk.play() elif e.type == SDL_MOUSEBUTTONUP: pass elif e.type == SDL_MOUSEWHEEL: print('mouse wheel') if e.wheel.y > 0: if self.iven_pos[0] == 573 + 64 * 11: self.iven_pos[0] = 573 else: self.iven_pos[0] += 64 elif e.wheel.y < 0: if self.iven_pos[0] == 573: self.iven_pos[0] = 573 + 64 * 11 else: self.iven_pos[0] -= 64
def handle_event(self, e): pair = (e.type, e.key) if pair in Simon.KEY_MAP: self.simon.delta = gobj.point_add(self.simon.delta, Simon.KEY_MAP[pair]) if e.type == SDL_KEYUP: return
def generate_bullet(self): blt = self.bullet(gobj.point_add(self.pos, self.fire_point), self.damage) gfw.world.add(gfw.layer.any, blt)
def update(self): self.prevwsound += gfw.delta_time if self.isRight and self.delta[0] < 1.0: self.delta = gobj.point_add(self.delta, (6 * gfw.delta_time, 0)) if self.isLeft and self.delta[0] > -1.0: self.delta = gobj.point_add(self.delta, (-6 * gfw.delta_time, 0)) if not self.isRight and self.delta[0] > 0: self.delta = gobj.point_add(self.delta, (-6 * gfw.delta_time, 0)) if self.delta[0] < 0.1: self.delta = (0, self.delta[1]) if not self.isLeft and self.delta[0] < 0: self.delta = gobj.point_add(self.delta, (6 * gfw.delta_time, 0)) if self.delta[0] > -0.1: self.delta = (0, self.delta[1]) if self.isFalling: self.delta = (self.delta[0], self.delta[1] - self.gravity * gfw.delta_time) x, y = self.pos dx, dy = self.delta if x + dx > get_canvas_width() / 2 and self.mx - get_canvas_width( ) > self.xOffset: self.xOffset += dx * self.speed * gfw.delta_time x = get_canvas_width() / 2 if x + dx < get_canvas_width() / 2 and self.xOffset > 0: self.xOffset += dx * self.speed * gfw.delta_time x = get_canvas_width() / 2 else: x += dx * self.speed * gfw.delta_time if y + dy > get_canvas_height() / 2 and self.my - get_canvas_height( ) > self.yOffset: self.yOffset += dy * self.speed * gfw.delta_time y = get_canvas_height() / 2 if y + dy < get_canvas_height() / 2 and self.yOffset > 0: self.yOffset += dy * self.speed * gfw.delta_time y = get_canvas_height() / 2 else: y += dy * self.speed * gfw.delta_time if self.xOffset < 0: self.xOffset = 0 if self.yOffset < 0: self.yOffset = 0 self.delay_frame -= 1 self.pos = x, y self.time += gfw.delta_time frame = self.time * 15 if dx < 0 or dx > 0: self.isWalk = True else: self.isWalk = False if self.isWalk: if self.delay_frame == 0 and not self.isJumping: self.fidx += 1 if self.fidx % 4 == 0: self.fidx = 0 if self.isJumping: if self.fidx == 0 or self.fidx == 2: self.fidx = 1 if self.prevwsound > self.walksound_delay and not ( self.isJumping or self.isFalling): self.walkfx.play() self.prevwsound = 0 else: self.fidx = 0 if self.delay_frame == 0: self.delay_frame = 12 if self.GaussDelay < 1.0: self.GaussDelay += gfw.delta_time else: self.GaussDelay = 1.0 self.collision() Tile.xOffset = self.xOffset Tile.yOffset = self.yOffset
def handle_event(self, e): pair = (e.type, e.key) if pair in Knight.KEY_MAP: self.tempdelta = gobj.point_add(self.tempdelta, Knight.KEY_MAP[pair])