Игра «Змейка» · Шаг 4 из 5
Где еда
Съеденная еда появляется снова — в случайной клетке, но не на змейке. А когда змейка заняла всё поле, еде места нет: это победа.
Что сделать
Выберите клетку для новой еды — случайную, но не на змейке.
Что приходит
zmeya— клетки змейкиvysotaиshirina— размер поляsluchay— генератор случайностей, какrandom.Random
Что вернуть
Клетку — sluchay.choice из свободных, перечисленных по строкам сверху вниз, в строке слева направо; свободных нет — None.
Допишите функцию mesto_edy в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт mesto_edy в начале партии и каждый раз, когда змейка съела еду. None значит, что поле заполнено, — это победа. Решите шаг — и еда будет появляться где угодно, а не только в углах.
Без этого шага: еда появляется только в углах.
Поле 2 строки на 3 столбца, змейка занимает (0, 0) и (0, 1). Свободны четыре клетки, по порядку: (0, 2), (1, 0), (1, 1), (1, 2). Генератор с затравкой 5 выбирает из этого списка (1, 1) — её функция и возвращает.
import random
mesto_edy([(0, 0), (0, 1)], 2, 3, random.Random(5))
(1, 1)
Функция принимает змейку, размер поля (строки, столбцы) и генератор случайностей sluchay — у него есть методы модуля random.
Свободные клетки — все клетки поля, где нет змейки, по порядку: по строкам сверху вниз, в строке слева направо. Функция возвращает одну из них, выбранную sluchay.choice(...) из этого списка. Если свободных клеток нет — None.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.