Я пытаюсь создать настольную игру с python 3, используя библиотеку pygame. То, что я пытаюсь сделать, это создать список объектов x, которые я назвал пробелами для представления платы. Сначала я инициализирую все пробелы цветом как серым, а атрибут is_piece - False, что указывает на то, что все они пустые. Затем я хочу заменить пустые пространства кусками, заменив значения платы [x] [y] объектами с атрибутом is_piece, установленным в true.2d перечисляет замену объектов
Ошибка, с которой я столкнулась, заключается в том, что значения self.coords становятся перевернутыми. Например, в приведенном ниже коде каменный объект со значением [2, 3] self.coords заканчивается в позиции [3] [2] и наоборот. Добавление большего количества камней также закручивает self.coords, переворачивая значения индекса и иногда добавляя один к одному из них.
def initialize_board():
#creates an array of empty spaces representing the board
board = [[Space(GRAY, RADIUS, [x, y], False) for x in range(BOARDWIDTH)]
for y in range(BOARDHEIGHT)
#Create the center stones
board[3][3] = Space(RED, RADIUS, [3, 3], True)
board[2][3] = Space(RED, RADIUS, [2, 3], True)
board[4][3] = Space(RED, RADIUS, [4, 3], True)
board[3][2] = Space(RED, RADIUS, [3, 2], True)
board[3][4] = Space(RED, RADIUS, [3, 4], True)
Вот INIT метод класса Space, который я использую:
def __init__(self, color, size, coords, is_stone):
self.color = color
self.size = size
self.coords = coords
self.is_stone = is_stone #false if empty
self.pos = [CCONSTANT + DISTANCE * self.coords[0],
CCONSTANT + DISTANCE * self.coords[1]]
Может кто-нибудь сказать мне, что я Мессинг?
его ожидающая координата должна быть формы (x, y), но 2d-массивы обычно [row] [col] (например, (y, x)) ... поэтому вам нужно перевернуть, как вы даете ей координаты –
@ JoranBeasley: измените свой комментарий на ответ. –
Я бы избавился от всей проблемы с помощью dict вместо списка списков с ключами, которые являются кортежами '(x, y)'. –