В настоящее время я работаю над редактором карт для игры в pygame, используя карты плитки. Уровень строится из блоков в следующей структуре (хотя и гораздо больше):Конвертировать кортеж в список и обратно
level1 = (
(1,1,1,1,1,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,0,0,0,0,1)
(1,1,1,1,1,1))
, где «1» представляет собой блок, что это стена, и «0» представляет собой блок, который пустой воздух.
Следующий код в основном одна обработки изменения типа блока:
clicked = pygame.mouse.get_pressed()
if clicked[0] == 1:
currLevel[((mousey+cameraY)/60)][((mousex+cameraX)/60)] = 1
Но поскольку уровень сохраняется в кортеже, я не может изменить значение различных блоков. Как я могу легко изменить различные значения на уровне?
Редактировать: Решено! Спасибо, ребята
не использовать кортеж, просто использовать список с самого начала. Это может действительно замедлить ваш код, если ваш уровень огромен, если вам нужно продолжать конвертировать их – jamylak
, как насчет того, чтобы идти с списками вместо кортежей с самого начала? –
@ user2133308 btw просто примечание о совместимости, вы должны использовать целочисленное деление '//' вместо просто '/', потому что в Python 3 '/' будет выполнять разделение с плавающей запятой и испортить ваш код. – jamylak