Python Arcade:TypeError:“Chunk”对象不可编辑

2024-05-14 20:52:45 发布

您现在位置:Python中文网/ 问答频道 /正文

作为一个我想继续工作的小项目,我决定按照下面的指南创建一个简单的平台:https://arcade.academy/examples/platform_tutorial/index.html#

一切都正常,我必须添加代码来绘制地图(https://arcade.academy/examples/platform_tutorial/index.html#draw-a-level

我必须处理层的代码是相似和/或几乎相同的

用于引用的一些代码:

class Platformer(arcade.Window):
    # Class initializer
    def __init__(self):
        # Call the parent class and setup the window
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)

        # We use lists to keep track of our sprites. Every sprite should have its own list
        self.coin_list = None
        self.wall_list = None
        self.player_list = None

        # Variable used for holding player sprite
        self.player_sprite = None


    # Main game setup (when called the game resets)
    def setup(self):
        # Create the sprite lists
        self.player_list = arcade.SpriteList()
        self.wall_list = arcade.SpriteList(use_spatial_hash = True)
        self.coin_list = arcade.SpriteList(use_spatial_hash = True)

        # Specify the player image source
        player_image_source = "images/Player/player.png"
        self.player_sprite = arcade.Sprite(player_image_source, SPRITE_SCALING)

        # Set the X and Y coordinates to where the player will spawn
        self.player_sprite.center_x = 64
        self.player_sprite.center_y = 192

        # Append the player sprite to the player list
        self.player_list.append(self.player_sprite)

        # ------------------Load a map from map.tmx------------------ #
        # Name of map file to load
        map_name = "Maps/map.tmx"

        # Get layer names
        platforms_layer_name = "Platforms"
        coins_layer_name = "Coins"

        # Read the map
        my_map = arcade.tilemap.read_tmx(map_name)

        # Platforms
        self.wall_list = arcade.tilemap.process_layer(map_object = my_map,
                                                      layer_name = platforms_layer_name,
                                                      scaling = SPRITE_SCALING)

        # Coins
        self.coin_list = arcade.tilemap.process_layer(map_object = my_map,
                                                      layer_name = coins_layer_name,
                                                      scaling = SPRITE_SCALING)

        # Set background color
        if my_map.background_color:
            arcade.set_background_color(my_map.background_color)

        # Create physics engine
        self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
                                                             self.wall_list,
                                                             GRAVITY)
        # ----------------------------------------------------------- #

下面是抛出错误的代码:

# Here is the part of the code where ERROR IS THROWN
         self.wall_list = arcade.tilemap.process_layer(map_object = my_map,
                                              layer_name = platforms_layer_name
                                              scaling = SPRITE_SCALING)

         self.coin_list = arcade.tilemap.process_layer(map_object = my_map, # it stops right here
                                              layer_name = coins_layer_name
                                              scaling = SPRITE_SCALING)

下面是他们的代码:

        # -- Platforms
        self.wall_list = arcade.tilemap.process_layer(map_object=my_map,
                                                      layer_name=platforms_layer_name,
                                                      scaling=TILE_SCALING,
                                                      use_spatial_hash=True)
        # -- Coins
        self.coin_list = arcade.tilemap.process_layer(my_map, coins_layer_name, TILE_SCALING)

回溯:

Traceback (most recent call last):
  File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 221, in <module>
    main()
  File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 215, in main
    window.setup()
  File "C:/Users/canus/Documents/GitHub/Platformer/Platformer/2D Platformer.py", line 101, in setup
    scaling = SPRITE_SCALING)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\arcade\tilemap.py", line 457, in process_layer
    return _process_tile_layer(map_object, layer, scaling, base_directory)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\arcade\tilemap.py", line 404, in _process_tile_layer
    for column_index, item in enumerate(row):
TypeError: 'Chunk' object is not iterable

为什么会这样?任何反馈都将不胜感激


Tags: thenameselflayermapobjectmyprocess

热门问题