示例#1
0
    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
示例#2
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
        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)
示例#3
0
    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
示例#4
0
文件: knight.py 项目: mi1128h/2DGP
 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)
示例#5
0
 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)
示例#6
0
文件: knight.py 项目: mi1128h/2DGP
 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)
示例#7
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)
示例#8
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))
示例#9
0
 def move(self, diff):
     self.pos = gobj.point_add(self.pos, diff)        
示例#10
0
    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
示例#11
0
 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
示例#12
0
 def generate_bullet(self):
     blt = self.bullet(gobj.point_add(self.pos, self.fire_point),
                       self.damage)
     gfw.world.add(gfw.layer.any, blt)
示例#13
0
    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
示例#14
0
文件: knight.py 项目: mi1128h/2DGP
 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])