Python实现超级玛丽游戏系列教程02玛丽走跑

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理

作者:豆约翰    来源:掘金

想要获取更多Python学习资料,了解更多关于Python的知识,可以加Q群630390733踊跃发言,大家一起来学习讨论吧!

行走

constants.py

STAND = 'standing'
WALK = 'walk'

SMALL_ACCEL = .2
SMALL_TURNAROUND = .35
复制代码

玛丽类构造函数修改如下:

玛丽类新增及修改

    def update(self, keys):
        self.handle_state(keys)
        self.update_position()
        self.animation()

    def update_position(self):
        self.rect.x += self.x_vel
        self.rect.y += self.y_vel

    def handle_state(self, keys):
        if self.state == c.STAND:
            self.standing(keys)
        elif self.state == c.WALK:
            self.walking(keys)


    def animation(self):
        if self.facing_right:
            self.image = self.right_frames[self.frame_index]
        else:
            self.image = self.left_frames[self.frame_index]

    def load_from_sheet(self):
        self.right_frames.append(
            self.get_image(178, 32, 12, 16))  # right
        self.right_frames.append(
            self.get_image(80, 32, 15, 16))  # right walking 1
        self.right_frames.append(
            self.get_image(99, 32, 15, 16))  # right walking 2
        self.right_frames.append(
            self.get_image(114, 32, 15, 16))  # right walking 3
        self.right_frames.append(
            self.get_image(144, 32, 16, 16))  # right jump
        self.right_frames.append(
            self.get_image(130, 32, 14, 16))  # right skid

        # The left image frames are numbered the same as the right
        # frames but are simply reversed.

        for frame in self.right_frames:
            new_image = pg.transform.flip(frame, True, False)
            self.left_frames.append(new_image)
复制代码

玛丽类新增

   def standing(self, keys):
        self.frame_index = 0
        self.x_vel = 0
        self.y_vel = 0

        if keys[pg.K_LEFT]:
            self.facing_right = False
            self.state = c.WALK
        elif keys[pg.K_RIGHT]:
            self.facing_right = True
            self.state = c.WALK
        else:
            self.state = c.STAND

    def walking(self, keys):
        if self.frame_index == 0:
            self.frame_index += 1
        else:
            if self.frame_index < 3:
                self.frame_index += 1
            else:
                self.frame_index = 1

        if keys[pg.K_LEFT]:
            self.facing_right = False
            self.x_accel = c.SMALL_ACCEL

            #向左速度是负的,如果没达到最小的负的速度,继续向左
            # 比如 -3 > -4,那就继续减小
            if self.x_vel > (self.max_x_vel * -1):
                self.x_vel -= self.x_accel

        elif keys[pg.K_RIGHT]:
            self.facing_right = True
            self.x_accel = c.SMALL_ACCEL

            if self.x_vel < self.max_x_vel:
                self.x_vel += self.x_accel

复制代码

不抖

能停

转身和加速

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值