Как решить проблему зависимости между двумя функциями? [закрыто] ⇐ Python

Программы на Python
Anonymous
Как решить проблему зависимости между двумя функциями? [закрыто]

Сообщение Anonymous »

Я пытаюсь создать многомерную игру «Крестики-нолики» в pygame. Функция get_marks_in_box() принимает словарь с сохраненным блоком и меткой и возвращает вложенный список 3x3 с метками конкретного блока. Во-вторых, функция box_completed() принимает отметки из функции get_marks_in_box() и проверяет, завершен ли этот блок (имеет 3 подряд), а затем обновляет соответствующий словарь блоков, чтобы что его можно пометить соответствующим образом.
Моя проблема заключается в том, что get_marks_in_box() требует обновления словаря, что делается в функции box_completed. А моя функция box_completed требует меток из функции get_marks_in_box_function. Я относительно новичок в программировании, поэтому понимаю, что может быть несколько (потенциально много) неэффективностей и неточностей. Как мне провести рефакторинг кода, чтобы улучшить логику?

Код: Выделить всё

def get_marks_in_box(self, coords, box_deg, box_dict):
N = game dimensions # 1,2, or 3

box_pos = (tl_pos, br_pos)

marks = [[None for _ in range(3)] for _ in range(3)]
for i in range(3):
for j in range(3):
# Calculate the coordinates of the current sub-box
sub_topleft_pos = ((sub_tl_row),(sub_tl_col))
sub_bottomright_pos = ((sub_br_row),(sub_br_col))

# Create a key for this sub-box (degree + its coordinates)
box_key = (sub_tl_pos, sub_br_pos)

# write mark to marks
marks[i][j] = box_dict[box_key]

return marks

Код: Выделить всё

def box_completed(self, coords, N, box_deg, marks, box_dict):
# horizontal
if horizantal 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark

# vertical
if vertical 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark

# diagonal
if diagonal 3 in a row:
box_pos = (tl_pos, br_pos)
box_dict[box_pos] = mark
При необходимости ссылка на полный код: https://drive.google.com/file/d/1xxzltk ... sp=sharing


Подробнее здесь: https://stackoverflow.com/questions/790 ... -functions

Вернуться в «Python»