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

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

配套视频教程


配套视频教程


项目代码


项目代码


最终效果


image.png


行走


constants.py

STAND = 'standing'
WALK = 'walk'
SMALL_ACCEL = .2
SMALL_TURNAROUND = .35


image.png


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


image.png


玛丽类新增及修改

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


不抖


image.png


image.png

image.png



能停


image.png


转身和加速


image.png


目录
相关文章
|
1月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
109 1
|
2月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
650 19
|
2月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
2月前
|
数据采集 存储 JSON
使用Python获取1688商品详情的教程
本教程介绍如何使用Python爬取1688商品详情信息,涵盖环境配置、代码编写、数据处理及合法合规注意事项,助你快速掌握商品数据抓取与保存技巧。
|
3月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
231 0
|
3月前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
5月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
586 1
|
Python
Python实现猜数字游戏
Python实现猜数字游戏
301 0

推荐镜像

更多