Python Arcade: TypeError: объект "Chunk" не повторяется. - PullRequest
0 голосов
/ 27 мая 2020

В качестве небольшого проекта, над которым я хочу продолжить работу, я решил создать простой платформер, следуя руководству отсюда: 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:

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

Почему это происходит? Любая обратная связь приветствуется !!

...