#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
?