Проблема со значениями ширины и высоты карты при создании tilemap в pygame

#python #2d-games

Вопрос:

Итак, я пытаюсь создать создателя игровых карт на python с помощью pygame. Я написал немного кода, предназначенного для инициализации карты с помощью пограничных плиток. Для этого у меня есть две основные переменные: tiles_wide и tiles_tall. То есть, сколько плиток в ширину и высоту имеет карта. Когда они имеют одинаковое значение (скажем, оба 25), мой код работает. Но когда это не так, он ломается. Я понятия не имею, почему, и это меня расстраивает.

Мой Код:

 tiles_wide = 30
tiles_tall = 25

# Create world list
world_data = []
for row in range(tiles_tall):
    # Create the set number of columns
    num_columns = [0] * tiles_wide
    world_data.append(num_columns)

# Create boundary
for tile in range(0, tiles_wide):
    world_data[tiles_wide - 1][tile] = 2
    world_data[0][tile] = 1
for tile in range(0, tiles_tall):
    world_data[tile][0] = 1
    world_data[tile][tiles_tall - 1] = 1
 

Точная ошибка, которую я получаю, это:

 IndexError: list index out of range
 

Комментарии:

1. На какую строку кода это указывает? Похоже, в какой-то момент вы перепутали свои wide и tall измерения.

Ответ №1:

Этот фрагмент кода выглядит подозрительно, так как первый индекс-это высота, а второй индекс — ширина:

 # Create boundary
for tile in range(0, tiles_wide):
    world_data[tiles_wide - 1][tile] = 2
    world_data[0][tile] = 1
for tile in range(0, tiles_tall):
    world_data[tile][0] = 1
    world_data[tile][tiles_tall - 1] = 1
 

Возможно, так и должно быть:

 # Create boundary
for tile in range(0, tiles_wide):
    world_data[tiles_tall - 1][tile] = 2
    world_data[0][tile] = 1
for tile in range(0, tiles_tall):
    world_data[tile][0] = 1
    world_data[tile][tiles_wide - 1] = 1
 

?