Pygame TMX文件未加载

问题描述

我一直在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时,应该说是level2.tmx。)

错误是这样的:

TMX compression type: zstd is not supported.
cannot load
done

它仍然可以加载level1.tmx,并且游戏可以正常进行,但是我无法加载level2.tmx,如果我尝试加载要播放的内容,屏幕将无法加载,并且会出现错误

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

如果有人可以帮助我,那就太好了。谢谢!

解决方法

该错误表明文件level2.tmx已使用压缩类型zstd压缩。 python安装不支持这种压缩方式。

如果您安装python模块来处理这种压缩,例如位于以下位置的模块: https://pypi.org/project/zstd/ 可能有用。

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

,

我想我有一个答案,但是每次我杀死僵尸时,都会出错

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 https://drive.google.com/file/d/1pLB7j3rX3_YY2d_nv92zfZnXJSGoeoJa/view?usp=sharing

level24.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

如果您可以回答这个问题或问题,那就太好了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...