当前位置: 首页 > news >正文

Python小游戏20——超级玛丽

首先,你需要确保你的Python环境中安装了pygame库。如果还没有安装,可以使用以下命令进行安装:

bash

pip install pygame

  • 运行效果展示

a3ddc05e6ea8417483213f85630ff89e.png

 0dd5327780d945a3aaf5398324f5a412.png

  •  代码展示

python

import pygame

import sys

 

# 初始化pygame

pygame.init()

 

# 设置屏幕尺寸

screen_width = 800

screen_height = 600

screen = pygame.display.set_mode((screen_width, screen_height))

pygame.display.set_caption("Super Mario Clone")

 

# 加载图像

mario_image = pygame.image.load('mario.png') # 假设你有一个名为mario.png的马里奥图像

mario_rect = mario_image.get_rect()

mario_rect.topleft = (50, screen_height - mario_rect.height - 50)

 

# 游戏主循环

running = True

clock = pygame.time.Clock()

 

while running:

    # 处理事件

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            running = False

        elif event.type == pygame.KEYDOWN:

            if event.key == pygame.K_LEFT:

                mario_rect.x -= 5

            elif event.key == pygame.K_RIGHT:

                mario_rect.x += 5

            elif event.key == pygame.K_UP:

                # 这里可以添加跳跃逻辑

                pass

 

    # 更新屏幕

    screen.fill((0, 0, 0)) # 用黑色填充屏幕

    screen.blit(mario_image, mario_rect.topleft) # 绘制马里奥

    pygame.display.flip()

 

    # 控制帧率

    clock.tick(30)

 

# 退出pygame

pygame.quit()

sys.exit()

  • 注意事项:

图像资源:上面的代码中用到了一个名为mario.png的图像文件,你需要自己准备这个文件,并确保它与你的Python脚本在同一目录下,或者提供正确的路径。

游戏逻辑:上面的代码仅仅展示了如何加载图像、处理键盘事件以及更新屏幕。要实现完整的“超级玛丽”游戏,你需要添加更多的游戏逻辑,比如跳跃、敌人、关卡、碰撞检测、得分系统等。

性能优化:上面的代码使用了简单的矩形碰撞检测和帧率控制,但在更复杂的游戏中,你可能需要使用更高效的算法和数据结构来优化性能。

学习资源:如果你对使用pygame开发游戏感兴趣,可以查阅pygame的官方文档或者参加一些在线课程来深入学习。

  • 知识点总结
1. pygame库的使用
初始化pygame:使用pygame.init()来初始化pygame库,确保它准备好进行游戏开发。
设置屏幕尺寸:使用pygame.display.set_mode()来设置游戏的屏幕尺寸和模式。
加载图像:使用pygame.image.load()来加载图像文件,并将其转换为pygame可以处理的Surface对象。
处理事件:使用pygame.event.get()来获取事件队列中的事件,并根据事件类型(如pygame.QUIT或pygame.KEYDOWN)进行相应的处理。
更新屏幕:使用screen.fill()来填充屏幕背景色,使用screen.blit()来将图像绘制到屏幕上,并使用pygame.display.flip()来更新整个屏幕或指定区域。
控制帧率:使用pygame.time.Clock()来创建一个时钟对象,并使用clock.tick()来控制游戏的帧率,以确保游戏运行流畅且不会过快。
2. 矩形碰撞检测
在上述代码中,虽然并没有实现完整的碰撞检测逻辑,但使用了mario_image.get_rect()来获取图像的矩形区域,这是进行碰撞检测的基础。
碰撞检测通常涉及比较两个矩形的位置关系,以确定它们是否相交或重叠。
3. 键盘事件处理
使用pygame.event.get()获取事件队列中的键盘事件。
检查事件类型是否为pygame.KEYDOWN,并根据按键的ASCII码或pygame提供的常量(如pygame.K_LEFT、pygame.K_RIGHT、pygame.K_UP)来判断按下了哪个键。
根据按键来更新游戏对象的位置或状态。
4. 游戏主循环
游戏主循环是游戏运行的核心,它不断地检查事件、更新游戏状态、渲染屏幕,并控制帧率。
在上述代码中,游戏主循环使用了一个while循环,直到用户关闭游戏窗口(触发pygame.QUIT事件)才结束。
5. 退出pygame
在游戏结束时,使用pygame.quit()来退出pygame库,并释放所有使用的资源。
使用sys.exit()来确保Python程序完全退出。
http://www.lryc.cn/news/476758.html

相关文章:

  • 配置文件格式(xml、properties、yml/yaml)
  • CentOS 7 软件/程序安装示例
  • Python绘制正弦函数图形
  • 【LVGL-列表部件 lv_list_create】
  • 【P2-6】ESP8266 WIFI模块在STA模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
  • 从零学习大模型(十)-----剪枝基本概念
  • Jest进阶知识:模拟 ES6 类 - 掌握类的依赖模拟与方法监听技巧
  • 前端Nginx的安装与应用
  • Java设计模式(代理模式整理中ing)
  • 第J9周:Inception v3算法实战与解析(pytorch版)
  • 如何封装一个axios,封装axios有哪些好处
  • java的批量update
  • go语言连续监控事件并回调处理
  • 1.探索WebSocket:实时网络的心跳!
  • uniapp学习(010-2 实现抖音小程序上线)
  • 测试和实施面试题收集
  • 【Vue3】一文全览基础语法-案例程序及配图版
  • 【OpenSearch】安装部署OpenSearch和OpenSearch-Dashboard
  • 【系统架构设计师】2023年真题论文: 论软件可靠性评价的设计与实现(包括和素材和论文)
  • 教程:使用 InterBase Express 访问数据库(二)
  • Windows密码的网络认证---基于挑战响应认证的NTLM协议
  • fpga 常量无法改变
  • 【HarmonyOS NEXT】如何给未知类型对象定义类型并使用递归打印所有的Key
  • RuoYi 样例框架运行步骤(测试项目自用,同学可自取)
  • Java进程CPU飙高排查
  • conda的对应环境下安装cuda11.0和对应的cudnn
  • 微服务透传日志traceId
  • 【自然语言处理与大模型】大模型(LLM)基础知识②
  • 新能源汽车的未来:车载电源与V2G技术的前景
  • Git 本地操作(2)