Игра «Тетрис» · Шаг 4 из 9
Мешок из семи
Если каждую фигуру выбирать наугад, бывает, что палочка «I» не приходит по тридцать ходов, а квадраты сыплются подряд. Современный тетрис честнее: фигуры кладут в мешок — все семь, по одной, — перемешивают и вынимают по очереди; мешок кончился — новый.
Что сделать
Выдавайте фигуры честно — мешками по семь, а не наугад.
Что приходит
sluchay— генератор случайностей, какrandom.Random
Что вернуть
Бесконечный генератор: каждый мешок — новый список семи видов, перемешанный sluchay.shuffle, по одной букве, потом следующий мешок.
Допишите функцию meshok в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра берёт из генератора вид каждой новой фигуры. Решите шаг — и фигуры пойдут в случайном порядке, но честно: каждая из семи — раз в семь фигур.
Без этого шага: фигуры идут всегда в одном порядке.
С генератором random.Random(1) первые 14 фигур — два мешка подряд: O Z T L I S J, потом J L I S T O Z. В каждой семёрке все семь видов ровно по разу.
import random potok = meshok(random.Random(1))
[next(potok) for _ in range(14)]
['O', 'Z', 'T', 'L', 'I', 'S', 'J', 'J', 'L', 'I', 'S', 'T', 'O', 'Z']
Функция-генератор принимает генератор случайностей sluchay (как random.Random). Без конца отдаёт виды фигур по одному: берёт список ["I", "J", "L", "O", "S", "T", "Z"] (новый на каждый мешок), перемешивает его sluchay.shuffle(...) и отдаёт по порядку; потом — следующий мешок.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.