Структура карты
Рассмотрим параметры нашего бота подробнее.
def make_choice(x,y,field):
#произвольный код
Переменная field - это матрица, каждая ячейка которой - это клетка на карте. Матрица игры содержит информацию о:
- расположении игроков, монеток и стен на карте;
- текущем уровне жизни всех игроков;
- истории ходов каждого игрока с начала игры.

Технически field - список столбцов, каждый из который - это список клеток. Номер столбца - это координата точки по оси X, а номер элемента в столбце - координата по оси Y.
Например, размеры карты можно определить следующим образом:
def make_choice(x,y,field):
width = len(field) # число столбцов
height = len(field[0]) # число клеток в первом столбце
# код бота
В каждой клетке может находиться:
0, если клетка пустая;1, если в клетке монетка;-1, если в клетке стена;{"name": "bot name", "life": 10, "history": ["go_right"]}, если в клетке бот (словарь с его именем, здоровьем и историей ходов).
Например, вот так можно проверить, есть ли монетка в клетке (0,0):
def make_choice(x,y,field):
if field[0][0] == 1:
# в клетке (0, 0) есть монетка
# код бота
А чтобы узнать уровень здоровья нашего бота, можно написать:
def make_choice(x,y,field):
my_life = field[x][y]['life']
# код бота
История ходов - это все предыдущие ходы танка. Если в течение хода танк сработал с ошибками, в историю будет добавлена строка "crash". Длина списка с историей равна числу ходов, прошедших с начала раунда.
В примере ниже, танк будет ходить вверх, если предыдущий ход был таким же:
def make_choice(x,y,field):
my_history = field[x][y]['history']
num_of_steps = field[x][y]['history']
if (num_of_step > 0 and my_history[-1] == 'go_up'):
return 'go_up'
# остальной код