# 7. Отображение хода игрока
Table of Contents
7. Отображение хода игрока
Цель
Игрок наглядно видит свою фазу хода и куда разрешено отпустить выбранный шар, не просчитывая путь вручную по сетке 8×14.
Описание выполненной работы
_start_human_turn выставляет _set_turn_banner("Ваш ход"). При первичном выборе шара и при переключении на другой занятый шар после _clear_selection() вызывается _refresh_player_move_hints().
Функция обходит все индексы: выбранная клетка получает SELECTED; каждая пустая клетка помечается REACHABLE, если _board.has_path(_selected_idx, i), иначе снимается только режим достижимости. _clear_selection() дополнительно вызывает _clear_reachable_highlights(), чтобы отмена выбора по повторному тапу убирала зелёноватый ореол с поля.
Фрагмент пересчёта подсказок:
func _refresh_player_move_hints() -> void: if _busy or not _human_turn or _game_ended: return if _selected_idx < 0: _clear_reachable_highlights() return for i in CELL_COUNT: var cell := _grid.get_child(i) as CellView if cell == null: continue if i == _selected_idx: cell.set_highlight_kind(CellView.HighlightKind.SELECTED) continue if _board.cells[i] >= 0: if cell.get_highlight_kind() == CellView.HighlightKind.REACHABLE: cell.set_highlight_kind(CellView.HighlightKind.NONE) continue if _board.has_path(_selected_idx, i): cell.set_highlight_kind(CellView.HighlightKind.REACHABLE) else: if cell.get_highlight_kind() == CellView.HighlightKind.REACHABLE: cell.set_highlight_kind(CellView.HighlightKind.NONE)При окончании партии баннер переводится в «Игра окончена» до показа диалога — это общий для обоих шагов маркер финала сессии.
Ссылка на проект: Third Planet
Ссылка на игру: Google Play Rustore