首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pygame TMX文件未加载

Pygame TMX文件未加载
EN

Stack Overflow用户
提问于 2020-08-30 19:50:42
回答 2查看 159关注 0票数 1

我一直在用pygame(https://www.youtube.com/watch?v=3UxnelT9aCo&list=PLsk-HSGFjnaGQq7ybM8Lgkh5EMxUWPm2i)做一个KidsCanCode项目,我已经完成了所有的工作。现在我试图通过加载两种不同的平铺格式来创建关卡,但只有一种格式可以加载。即使我只尝试加载'level2.tmx',它也不会工作。代码如下:

main.py https://drive.google.com/file/d/1deCK3QED_e8uE4oRRECtizgTFMLvwbKN/view?usp=sharing

settings.py https://drive.google.com/file/d/1LvhnJCobweFT462PPXY42_FdnSF2UGs2/view?usp=sharing

sprites.py https://drive.google.com/file/d/1FD-Uj2SjMVNG29IcK5qaLoU6RBIB5I1s/view?usp=sharing

tilemap.py https://drive.google.com/file/d/1JeYiEo-xJHJ0I16geg7jNERAC5pqEIIH/view?usp=sharing

(顺便说一下,在main.py(load_data)中,当它说要加载tiled1.tmx时,它应该是load 2.tmx。)

错误是这样的:

代码语言:javascript
复制
TMX compression type: zstd is not supported.
cannot load
done

它仍然加载level1.tmx,游戏正常进行,但我不能加载level2.tmx,如果我尝试加载它来玩,屏幕不加载,并给出一个错误:

代码语言:javascript
复制
TMX compression type: zstd is not supported.
Traceback (most recent call last):
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 285, in <module>
    g.new()
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 120, in new
    self.map = TiledMap(path.join(self.map_folder, 'level2.tmx'))
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\tilemap.py", line 22, in __init__
    tm = pytmx.load_pygame(filename, pixelalpha=True)
  File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\util_pygame.py", line 141, in load_pygame
    return pytmx.TiledMap(filename, *args, **kwargs)
  File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 360, in __init__
    self.parse_xml(ElementTree.parse(self.filename).getroot())
  File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 391, in parse_xml
    self.add_layer(TiledTileLayer(self, subnode))
  File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 962, in __init__
    self.parse_xml(node)
  File "C:\Users\ruben\AppData\Local\Programs\Python\Python38\lib\site-packages\pytmx\pytmx.py", line 1044, in parse_xml
    raise Exception
Exception

如果有人能帮我,那就太好了。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-01 17:26:48

该错误指示文件level2.tmx是使用压缩类型zstd压缩的。您的python安装不支持这种压缩。

如果您安装一个python模块来处理这种压缩,比如位于:https://pypi.org/project/zstd/的模块,它可能会工作。

或者,您需要将level2.tmx转换为与level1.tmx相同的格式

票数 0
EN

Stack Overflow用户

发布于 2020-09-02 19:56:22

我想我有答案了,但每次我杀僵尸的时候,错误

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 295, in <module>
    g.run()
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 155, in run
    self.draw()
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\main.py", line 222, in draw
    self.screen.blit(self.map_img, self.camera.apply(self.map))
  File "C:\Users\ruben\Documents\MAX\Python\Pygame\tileyLevel\tilemap.py", line 49, in apply
          return entity.rect.move(self.camera.topleft)
AttributeError: 'TiledMap' object has no attribute 'rect'

就会出现。我不知道为什么会这样。我知道我应该编辑答案来做这件事,但我没有办法做到这一点。我需要两个答案。这些文件没有太多更改,但它们如下所示:

settings.py https://drive.google.com/file/d/1ziel23c9GkB9kzcVOcrqiCVMq-RtfC2q/view?usp=sharing

tilemap.py https://drive.google.com/file/d/12-Xh7P7llm5nGPqGt_CLkFbzU8LfWtBK/view?usp=sharing

main.py https://drive.google.com/file/d/1gUTQ30GI2bK6oUalA4T9hUwffphE4sun/view?usp=sharing

sprites.py https://drive.google.com/file/d/1EhHRkEzAJp6spKFMv-ar-jMSOy79DSjc/view?usp=sharing

Level3.tmx(您已经有了level1和level2) https://drive.google.com/file/d/1E4FrrSNt6748mar77gV8nztU25z3oSfI/view?usp=sharing

level4.tmx 4.tmx https://drive.google.com/file/d/1pLB7j3rX3_YY2d_nv92zfZnXJSGoeoJa/view?usp=sharing

level 24.tmx(它是0级,但我选择编写level24,因为我不太可能有24个级别。我懒得更改名称。) https://drive.google.com/file/d/1pLB7j3rX3_YY2d_nv92zfZnXJSGoeoJa/view?usp=sharing

Dungeons.tmx https://drive.google.com/file/d/1dGvWZ8EKf2WZ71k3RORTczjUIxRebec0/view?usp=sharing

如果你能回答这个或这个问题,那就太好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63657123

复制
相关文章

相似问题

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