2048 игра в Python - PullRequest
       28

2048 игра в Python

1 голос
/ 15 октября 2019

Будучи новичком, я начал кодировать игру 2048. Я сделал матрицу и заполнил ее нулями. Затем я хотел написать функцию, которая перебирает всю матрицу и находит все 0 значений. Затем сохраните координаты значений 0, а затем замените их значениями 2 или 4. Я сделал случайную переменную, чтобы выбрать между 2 или 4. Проблема в том, что я не знаю, как передать координаты x и y значений 0 в массив и затем прочитать их.




table = [[0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0]]


options = []



def saveOptions(i, j):
     options.append([{i , j}])
     return options




def optionsReaderandAdder(options):
    if len(options) > 0:
        spot = random.random(options)
        r = random.randint(0, 1)
        if r > 0.5:
            table  <-------- THIS IS THE LINE WHERE I WOULD LIKE TO CHANGE THE VALUE OF THE 0 TO 2 OR 4.










def optionsFinder():
    for i in range(4):
        for j in range(4):
            if table[i][j] == 0:
                saveOptions(i, j)

    optionsReaderandAdder(options)


addNumber()

print('\n'.join([''.join(['{:4}'.format(item) for item in row])
                 for row in table]))

1 Ответ

1 голос
/ 15 октября 2019

Вы можете перебирать строки и столбцы таблицы:

for row in table:
    for element in row:
        if element == 0:
             # now what?

Мы не знаем, что такое координата.

В Python есть полезная функция с именем enumerate. Мы можем выполнять итерацию так же, как и ранее, но мы также получаем индекс или позицию в массиве.

zeroes = []

for i, row in enumerate(table):
    for j, element in enumerate(row):
        if element == 0:
             zeroes.append((i, j))

Затем мы можем установить значения, например, все, на 2:

for i, j in zeroes:
    table[i][j] = 2

Ваш случайный код выглядит хорошо.

...