首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中用导入pytmx加载tmx文件

在python中用导入pytmx加载tmx文件
EN

Stack Overflow用户
提问于 2022-11-04 23:49:50
回答 2查看 39关注 0票数 1

我已经做了一个地图在瓷砖编辑器,并打算使用它在游戏中使用游戏。我导入pytmx来帮助处理这个过程,但是当我使用load_pygame(“文件目录”)时,它会给出这个错误。

代码语言:javascript
复制
Traceback (most recent call last):
  File "D:\Coder man\code\GUI\game map\showing map.py", line 7, in <module>
    tmx_data = load_pygame("D:\Tile sheet\Dungeon Hub room.tmx")
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\util_pygame.py", line 183, in load_pygame
    return pytmx.TiledMap(filename, *args, **kwargs)
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 501, in __init__
    self.parse_xml(ElementTree.parse(self.filename).getroot())
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 550, in parse_xml
    self.add_tileset(TiledTileset(self, subnode))
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 1101, in __init__
    self.parse_xml(node)
  File "C:\Users\Name\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\site-packages\pytmx\pytmx.py", line 1129, in parse_xml
    source, self.parent.filename, path
Exception: Cannot find tileset file :/automap-tiles.tsx from D:\Tile sheet\Dungeon Hub room.tmx, should be at D:\Tile sheet\:\automap-tiles.tsx

到目前为止,我的代码是:

代码语言:javascript
复制
import pygame, sys
from pytmx.util_pygame import load_pygame


pygame.init()
screen = pygame.display.set_mode((1280, 720))
tmx_data = load_pygame("D:\Tile sheet\Dungeon Hub room.tmx")
print(tmx_data)


# game loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill("black")
    pygame.display.update()

我原以为这款玩偶游戏不会出现错误,输出结果是:

还有一个游戏窗口

我尝试过重复检查文件的目录并使用pytmx.load_pygame

EN

回答 2

Stack Overflow用户

发布于 2022-11-05 02:10:44

错误信息清楚地说明了问题所在。

代码语言:javascript
复制
Cannot find tileset file :/automap-tiles.tsx ... at D:\Tile sheet\:\automap-tiles.tsx

您的平铺地图引用的是外部瓷砖集文件(*.tsx),它的文件路径由一个完整路径指定,没有驱动器号,这是由微软定义的,我将称之为半绝对路径,它既不是绝对路径,也不是相对路径。PyTMX不支持这种路径。

有两种解决方案。

  1. 将瓷砖集路径更改为绝对路径或相对路径,并正确地指向瓷砖集文件。
  2. 保存瓷砖地图,使其嵌入瓷砖集。在TileD的preferences对话框中尝试“Embed”导出选项。
票数 0
EN

Stack Overflow用户

发布于 2022-11-05 07:06:25

不要在文件路径中使用反斜杠,因为"\"启动和转义序列(参见String和Bytes文字,例如"\n"是新行,"\t"是选项卡)。你有三个选择:

  1. /而不是\: tmx_data = load_pygame("D:/Tile sheet/地下城中心room.tmx")
  2. 而不是\(转义序列"\\"是一个反斜杠) tmx_data =load_pygame(“D:\瓷片\地下城中心room.tmx")
  3. 使用原始字符串文字 (r"...") tmx_data =load_pygame(r“D:\瓷片\地下城枢纽room.tmx")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74324034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档