Игра «Морской бой» · Шаг 2 из 5
Мимо, ранил, убил
На выстрел в морском бою отвечают одним из трёх слов. «Мимо» — в клетке пусто. «Ранил» — попали в корабль, но у него ещё остались целые палубы. «Убил» — этим выстрелом подбита последняя целая палуба корабля, и он тонет.
Что сделать
Ответьте на выстрел одним словом — «мимо», «ранил» или «убил».
Что приходит
korabli— флот: список кораблей, корабль — список клетокpopadaniya— множество клеток, куда уже попали раньшеkletka— куда стреляют сейчас
Что вернуть
"мимо", если в клетке нет корабля; "убил", если остальные палубы этого корабля уже подбиты; иначе "ранил".
Допишите функцию vystrel в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт vystrel на каждый выстрел — ваш и противника. Решите шаг — и корабли начнут тонуть, а партия — кончаться победой.
Без этого шага: попадание видно, но корабли не тонут — только «ранил».
vystrel([[(0, 0), (0, 1)], [(3, 3)]], set(), (0, 1))
'ранил'
Найдите корабль, в котором лежит kletka. Нет такого — "мимо". Есть — посмотрите на его клетки: если все они, кроме kletka, уже в popadaniya, ответ "убил", иначе "ранил". Однопалубный корабль тонет от первого же попадания.
Попадания по другим кораблям на ответ не влияют.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.