Найти в Дзене
Заметки по Python

Основы Python. Часть 10

Вы работаете в команде разработчиков мобильной игры, и вам досталась такая часть от ТЗ заказчика: Есть два юнита, каждый из них называется «Воин». Каждому устанавливается здоровье в 100 очков. Они бьют друг друга в случайном порядке. Тот, кто бьёт, здоровье не теряет. У того, кого бьют, оно уменьшается на 20 очков от одного удара. После каждого удара надо выводить сообщение, какой юнит атаковал и сколько у противника осталось здоровья. Как только у кого-то заканчивается ресурс здоровья, программа завершается сообщением о том, кто одержал победу. Реализуйте модель с именем Student, содержащую поля: «ФИ», «Номер группы», «Успеваемость» (список из пяти элементов). Затем создайте список из десяти студентов (данные о студентах можете придумать свои или запросить их у пользователя) и отсортируйте его по возрастанию среднего балла. Выведите результат на экран. На координатной плоскости рисуются круги, у каждого круга следующие параметры: координаты X и Y центра круга и значение R ― радиус к
Оглавление

Задача 1. Драка

Вы работаете в команде разработчиков мобильной игры, и вам досталась такая часть от ТЗ заказчика:

Есть два юнита, каждый из них называется «Воин». Каждому устанавливается здоровье в 100 очков. Они бьют друг друга в случайном порядке. Тот, кто бьёт, здоровье не теряет. У того, кого бьют, оно уменьшается на 20 очков от одного удара. После каждого удара надо выводить сообщение, какой юнит атаковал и сколько у противника осталось здоровья. Как только у кого-то заканчивается ресурс здоровья, программа завершается сообщением о том, кто одержал победу.

Задача 2. Студенты

Реализуйте модель с именем Student, содержащую поля: «ФИ», «Номер группы», «Успеваемость» (список из пяти элементов). Затем создайте список из десяти студентов (данные о студентах можете придумать свои или запросить их у пользователя) и отсортируйте его по возрастанию среднего балла. Выведите результат на экран.

-2

Задача 3. Круг

На координатной плоскости рисуются круги, у каждого круга следующие параметры: координаты X и Y центра круга и значение R ― радиус круга. По умолчанию центр находится в (0, 0), а радиус равен 1.

Реализуйте класс «Круг», который инициализируется по этим параметрам. Круг также может:

Находить и возвращать свою площадь.

Находить и возвращать свой периметр.

Увеличиваться в K раз.

Определять, пересекается ли он с другой окружностью.

-3

Задача 4. Отцы, матери и дети

Реализуйте два класса: «Родитель» и «Ребёнок». У родителя есть:

Имя.

Возраст.

Список детей.

И он может:

Сообщить информацию о себе.

Успокоить ребёнка.

Покормить ребёнка.

У ребёнка есть:

Имя.

Возраст (должен быть меньше возраста родителя хотя бы на 16 лет).

Состояние спокойствия.

Состояние голода.

-4

Задача 5. Весёлая ферма 2

Мы продолжаем писать игру «Весёлая ферма», и теперь необходимо её немного модернизировать. Всё-таки кому-то нужно собирать урожай, и для этого нам понадобится садовник, у которого есть:

Имя.

Грядка с растением, за которым он ухаживает (в нашем случае пока только грядка с картошкой).

И он может:

Ухаживать за грядкой.

Собирать с неё урожай (количество картошки ― пустой список).

Модернизируйте программу, используя новый класс «Садовник». На всякий случай даём описание картошки и грядки:

У картошки есть её номер в грядке, а также стадия зрелости. Она может предоставлять информацию о своей зрелости и расти. Всего у картошки может быть четыре стадии зрелости.

Грядка с картошкой содержит список картошки, которая на ней растёт, и может, собственно, взращивать всю эту картошку, а также предоставлять информацию о зрелости всей картошки на своей территории.

Проверьте работу программы, создав грядку из пяти картошек и отдав эту грядку садовнику. Пусть поухаживает за грядкой и соберёт урожай (а может быть даже и не один).

-5

Задача 6. Магия

Для одной игры необходимо реализовать механику магии, где при соединении двух элементов получается новый. У нас есть четыре базовых элемента: «Вода», «Воздух», «Огонь», «Земля». Из них как раз и получаются новые: «Шторм», «Пар», «Грязь», «Молния», «Пыль», «Лава».

Вот таблица преобразований:

Вода + Воздух = Шторм

Вода + Огонь = Пар

Вода + Земля = Грязь

Воздух + Огонь = Молния

Воздух + Земля = Пыль

Огонь + Земля = Лава

Напишите программу, которая реализует все эти элементы. Каждый элемент необходимо организовать как отдельный класс. Если результат не определён, то возвращается None.

Примечание: сложение объектов можно реализовывать через магический метод __add__.

-6
-7

Задача 7. Совместное проживание

Чтобы понять, стоит ли ему жить с кем-то или всё же лучше остаться в гордом одиночестве, Артём решил провести довольно необычное исследование. Для этого он реализовал модель человека и модель дома.

Человек может:

Есть (+ сытость, − еда).

Работать (− сытость, + деньги).

Играть (− сытость).

Ходить в магазин за едой (+ еда, − деньги).

У человека есть имя, степень сытости (изначально 50) и дом.

В доме есть холодильник с едой (изначально 50 еды) и тумбочка с деньгами (изначально 0 денег).

Если сытость человека становится меньше нуля, то человек умирает.

Логика действий человека определяется следующим образом:

Генерируется число кубика от 1 до 6.

Если сытость < 20, то поесть.

Иначе, если еды в доме < 10, то сходить в магазин.

Иначе, если денег в доме < 50, то работать.

Иначе, если кубик равен 1, то работать.

Иначе, если кубик равен 2, то поесть.

Иначе играть.

По такой логике эксперимента человеку надо прожить 365 дней.

Реализуйте такую программу и создайте двух людей, живущих в одном доме. Проверьте работу программы несколько раз.

-8
-9

Задача 8. Блек-джек

Костя так и не смог завязать с азартными играми. Но перед тем как в очередной раз всё проиграть, он решил как следует подготовиться. И написать программу, на которой он будет тренироваться играть в блек-джек.

Блек-джек также известен как 21. Суть игры проста: нужно или набрать ровно 21 очко, или набрать очков больше, чем в руках у дилера, но ни в коем случае не больше 21. Если игрок собирает больше 21, он «сгорает». В случае ничьей игрок и дилер остаются при своих.

Карты имеют такие «ценовые» значения:

от двойки до десятки — от 2 до 10 соответственно;

у туза — 1 или 11 (11 пока общая сумма не больше 21, далее 1);

у «картинок» (король, дама, валет) — 10.

Напишите программу, которая вначале случайным образом выдаёт пользователю и компьютеру по две карты и затем запрашивает у пользователя действие: взять карту или остановиться. На экран должна выдаваться информация о руке пользователя. После того как игрок останавливается, выведите на экран победителя.

Представление карты реализуйте с помощью класса.

Дополнительно: сделайте так, чтобы карты не могли повторяться.

-10
-11

Задача 9. Крестики-нолики

Напишите программу, которая реализует игру «Крестики-нолики». Да, это всё условие задачи.

-12
-13