如何在 PyGame 中加载多个图像?

2024-04-25

我需要在 pygame 中加载大约 200 个图像,以便在游戏中的各个点进行位块传输。我尝试为此编写一个函数,但总是回来NameError: name 'tomato' is not defined.

所有图像名称都是加载图像的变量存储的名称:tomato = pygame.image.load("tomato.png")

使用数组会更好吗,如果是的话我该怎么做?

代码:

def load(image):
    imagename = image
    imagetitle = str(imagename)+".png"
    image = pygame.image.load(imagetitle)
    return image

load("tomato")

def blit_f(fruit):
    gamedisplay.blit(fruit,(0,0))
    pygame.display.update()

fruitlist = []        

running = False
while not running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = True

        if event.type == pygame.MOUSEMOTION:
            mouse = pygame.mouse.get_pos()
            color = screen.get_at(mouse)

            if color == (209,0,0,255):
                blit_f(tomato)
                fruitlist.insert(0,"tomato")

        if event.type == pygame.MOUSEBUTTONDOWN:

            if fruitlist[0] == "tomato":
                gamedisplay.blit(tomato,(0,0))
                pygame.display.update()

仅当导致位块传送的条件时,才会发生 NameErrortomato.png满足:当我将鼠标悬停在番茄图像上时,即红色

如果我写load(tomato)而不是与"",当我运行代码时,NameError 就会出现,并突出显示load(tomato)代替gamedisplay.blit(tomato)至于与load("tomato").


如果你想加载这么多图像,请使用os.listdir https://docs.python.org/3/library/os.html#os.listdir并将目录中的所有图像放入字典中。另外,使用convert or convert_alpha加载图像后以提高性能。

def load_images(path_to_directory):
    """Load images and return them as a dict."""
    image_dict = {}
    for filename in os.listdir(path_to_directory):
        if filename.endswith('.png'):
            path = os.path.join(path_to_directory, filename)
            key = filename[:-4]
            image_dict[key] = pygame.image.load(path).convert()
    return image_dict

如果您还想加载子目录中的所有图像,请使用os.walk:

def load_images(path_to_directory):
    """Load all images from subdirectories and return them as a dict."""
    images = {}
    for dirpath, dirnames, filenames in os.walk(path_to_directory):
        for name in filenames:
            if name.endswith('.png'):
                key = name[:-4]
                img = pygame.image.load(os.path.join(dirpath, name)).convert()
                images[key] = img
    return images
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PyGame 中加载多个图像? 的相关文章

  • python 可以检测它运行在哪个操作系统下吗?

    python 可以检测操作系统 然后为文件系统构建 if else 语句吗 我需要将 Fn 字符串中的 C CobaltRCX 替换为 FileSys 字符串 import os path csv from time import strf
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 当x轴不连续时如何删除冗余日期时间 pandas DatetimeIndex

    我想绘制一个 pandas 系列 其索引是无数的 DatatimeIndex 我的代码如下 import matplotlib dates as mdates index pd DatetimeIndex 2000 01 01 00 00
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 如何为多组精灵创建随机位置?

    我尝试使用 blit 和 draw 方法进行 for 循环 并为 PlayerSprite 和 Treegroup 使用不同的变量 for PlayerSprite in Treegroup surface blit PlayerSprit
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现

随机推荐

  • 如何对二维 Java 数组进行切片?

    folks 我正在使用 JTables 并有一个二维数组 我需要删除数组中每一行的第一个元素 除此之外还有更简单的方法吗 int height data2 length int width data2 0 length Object dat
  • 需要帮助了解主干中嵌套视图的基础知识

    我一直在阅读有关backbone js 中嵌套视图的大量内容 并且了解其中的很多内容 但仍然令我困惑的一件事是 如果我的应用程序有一个 shell 视图 其中包含页面导航 页脚等子视图 这些子视图在使用应用程序的过程中不会改变 那么我是否需
  • 将 ListView 中的 SelectedItems 绑定到 Windows Phone 8.1 中的 ViewModel

    我有以下代码
  • Python / Pandas - 用于查看数据帧或矩阵的 GUI [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Pandas 包 它创建一个 DataFrame 对象 它基本上是一个标记矩阵 通常 我的
  • Laravel mix,在resources中调用app.js

    我有一个带有 laravel 和 vuejs 的网络应用程序 我使用 laravel mix 并且在我的 webpack mix js 中我有 mix js resources assets js app js public js 在我看来
  • 我收到来自 php 和 js 的空白电子邮件

    请帮助我解码真正的问题是什么 问题是 尽管我对此代码进行了所有调整和研究 但我仍然收到一封空白电子邮件 下面是我的 html javascript ajax 和 php 代码 HTML 代码 名为 contact html 的文件
  • PHP echo 与 PHP 短 echo 标签

    它们的安全性相同吗 我被告知使用 或者 当在 JavaScript 内回显数据时 它必须是 JavaScript 编码的
  • SQL Server 的 mysqldump 等效项

    SQL Server 是否有与 MySQL 具有 mysqldump 等效的模式和数据导出 转储工具 试图重新定位旧的 ASP 站点 但我对在 Windows 服务器上工作感到很不高兴 注意 DTS 导出实用程序自己似乎可以导出数据 而无需
  • 高效生成所有小于 N 的合数(及其因式分解)

    我想构建一个高效的 Python 迭代器 生成器 它会产生 所有小于 N 的合数 连同他们的质因数分解 我将其称为 composites with factors 假设我们已经有小于 N 的素数列表 或者可以执行相同操作的素数生成器 请注意
  • 根记录器忽略记录器级别

    根记录器在 我认为 应该记录时不会记录 import logging NOTE I make sure to set the root logger level to logging DEBUG logging basicConfig fo
  • 在 SPSS 18 中指定相对路径

    在 SPSS 11 中可以指定相对路径 例子 FILE HANDLE myfile data current txt LRECL 533 DATA LIST FILE myfile 这之所以有效 是因为 SPSS 11 将工作文件夹设置为源
  • 操作员 '??'不能应用于类型“T”和“T”的操作数

    我有以下通用方法 但 VS 给了我一个编译错误 运算符 不能应用于 T 和 T 类型的操作数 public static T Method
  • Google 地图 - 未捕获 InvalidValueError:初始化不是函数

    当我加载 Google 地图显示的页面时 我总是在控制台中看到以下错误 未捕获的 InvalidValueError 初始化不是函数js 传感器 假 回调 初始化 94 将鼠标悬停在文件名上时 这显示为源自 谷歌地图窗口和地图显示得非常好
  • 在RequiredFieldValidator 触发后调用JavaScript 方法?

    表单元素被视为无效后是否可以触发 JavaScript 方法 这是我的场景 ASPX 页面上有 2 个选项卡 用户必须在两个选项卡上填写信息 用户在选项卡 2 上单击提交按钮 但是 第一个选项卡上有一个必填字段需要注意 我是否需要创建自定义
  • 无法使用 conda 安装 mpi4py 并指定预安装的 mpicc 路径

    我已经尝试安装mpi4py with env MPICC path to openmpi bin mpicc conda install c anaconda mpi4py 但我收到这样的消息 The following NEW packa
  • 无法播种用户和角色

    我正在尝试将用户和角色植入我的数据库中 目前在 C MVC4 中使用具有自动迁移功能的 Code First 实体框架 每当我打电话 更新数据库 强制 我收到以下错误 运行种子方法 System InvalidOperationExcept
  • B 样条线混淆

    我意识到这个板上有关于 B 样条主题的帖子 但这些帖子实际上让我更加困惑 所以我想有人可能能够帮助我 我有 x 值范围从 0 到 1 的模拟数据 我想用三次样条拟合我的数据 degree 3 结为 0 0 1 0 2 0 9 1 我还想使用
  • 从日期选择器小部件中隐藏年份

    我试图从日期选择器小部件中隐藏年份字段 这可能看起来像一个重复的问题 但之前问题给出的答案并不能帮助我隐藏年份字段 这是我的代码 Override protected void onCreate Bundle savedInstanceSt
  • 为什么没有像 ruby​​ 的 capybara for java 这样的无头 BDD 测试引擎?

    为什么没有 java 版本的 ruby capybara https github com jnicklas capybara https github com jnicklas capybara 这可以与 tomcat 或其他东西一起使用
  • 如何在 PyGame 中加载多个图像?

    我需要在 pygame 中加载大约 200 个图像 以便在游戏中的各个点进行位块传输 我尝试为此编写一个函数 但总是回来NameError name tomato is not defined 所有图像名称都是加载图像的变量存储的名称 to