Задача 1. Драка
Вы работаете в команде разработчиков мобильной игры, и вам досталась такая часть от ТЗ заказчика:
Есть два юнита, каждый из них называется «Воин». Каждому устанавливается здоровье в 100 очков. Они бьют друг друга в случайном порядке. Тот, кто бьёт, здоровье не теряет. У того, кого бьют, оно уменьшается на 20 очков от одного удара. После каждого удара надо выводить сообщение, какой юнит атаковал и сколько у противника осталось здоровья. Как только у кого-то заканчивается ресурс здоровья, программа завершается сообщением о том, кто одержал победу.
Задача 2. Студенты
Реализуйте модель с именем Student, содержащую поля: «ФИ», «Номер группы», «Успеваемость» (список из пяти элементов). Затем создайте список из десяти студентов (данные о студентах можете придумать свои или запросить их у пользователя) и отсортируйте его по возрастанию среднего балла. Выведите результат на экран.
Задача 3. Круг
На координатной плоскости рисуются круги, у каждого круга следующие параметры: координаты X и Y центра круга и значение R ― радиус круга. По умолчанию центр находится в (0, 0), а радиус равен 1.
Реализуйте класс «Круг», который инициализируется по этим параметрам. Круг также может:
Находить и возвращать свою площадь.
Находить и возвращать свой периметр.
Увеличиваться в K раз.
Определять, пересекается ли он с другой окружностью.
Задача 4. Отцы, матери и дети
Реализуйте два класса: «Родитель» и «Ребёнок». У родителя есть:
Имя.
Возраст.
Список детей.
И он может:
Сообщить информацию о себе.
Успокоить ребёнка.
Покормить ребёнка.
У ребёнка есть:
Имя.
Возраст (должен быть меньше возраста родителя хотя бы на 16 лет).
Состояние спокойствия.
Состояние голода.
Задача 5. Весёлая ферма 2
Мы продолжаем писать игру «Весёлая ферма», и теперь необходимо её немного модернизировать. Всё-таки кому-то нужно собирать урожай, и для этого нам понадобится садовник, у которого есть:
Имя.
Грядка с растением, за которым он ухаживает (в нашем случае пока только грядка с картошкой).
И он может:
Ухаживать за грядкой.
Собирать с неё урожай (количество картошки ― пустой список).
Модернизируйте программу, используя новый класс «Садовник». На всякий случай даём описание картошки и грядки:
У картошки есть её номер в грядке, а также стадия зрелости. Она может предоставлять информацию о своей зрелости и расти. Всего у картошки может быть четыре стадии зрелости.
Грядка с картошкой содержит список картошки, которая на ней растёт, и может, собственно, взращивать всю эту картошку, а также предоставлять информацию о зрелости всей картошки на своей территории.
Проверьте работу программы, создав грядку из пяти картошек и отдав эту грядку садовнику. Пусть поухаживает за грядкой и соберёт урожай (а может быть даже и не один).
Задача 6. Магия
Для одной игры необходимо реализовать механику магии, где при соединении двух элементов получается новый. У нас есть четыре базовых элемента: «Вода», «Воздух», «Огонь», «Земля». Из них как раз и получаются новые: «Шторм», «Пар», «Грязь», «Молния», «Пыль», «Лава».
Вот таблица преобразований:
Вода + Воздух = Шторм
Вода + Огонь = Пар
Вода + Земля = Грязь
Воздух + Огонь = Молния
Воздух + Земля = Пыль
Огонь + Земля = Лава
Напишите программу, которая реализует все эти элементы. Каждый элемент необходимо организовать как отдельный класс. Если результат не определён, то возвращается None.
Примечание: сложение объектов можно реализовывать через магический метод __add__.
Задача 7. Совместное проживание
Чтобы понять, стоит ли ему жить с кем-то или всё же лучше остаться в гордом одиночестве, Артём решил провести довольно необычное исследование. Для этого он реализовал модель человека и модель дома.
Человек может:
Есть (+ сытость, − еда).
Работать (− сытость, + деньги).
Играть (− сытость).
Ходить в магазин за едой (+ еда, − деньги).
У человека есть имя, степень сытости (изначально 50) и дом.
В доме есть холодильник с едой (изначально 50 еды) и тумбочка с деньгами (изначально 0 денег).
Если сытость человека становится меньше нуля, то человек умирает.
Логика действий человека определяется следующим образом:
Генерируется число кубика от 1 до 6.
Если сытость < 20, то поесть.
Иначе, если еды в доме < 10, то сходить в магазин.
Иначе, если денег в доме < 50, то работать.
Иначе, если кубик равен 1, то работать.
Иначе, если кубик равен 2, то поесть.
Иначе играть.
По такой логике эксперимента человеку надо прожить 365 дней.
Реализуйте такую программу и создайте двух людей, живущих в одном доме. Проверьте работу программы несколько раз.
Задача 8. Блек-джек
Костя так и не смог завязать с азартными играми. Но перед тем как в очередной раз всё проиграть, он решил как следует подготовиться. И написать программу, на которой он будет тренироваться играть в блек-джек.
Блек-джек также известен как 21. Суть игры проста: нужно или набрать ровно 21 очко, или набрать очков больше, чем в руках у дилера, но ни в коем случае не больше 21. Если игрок собирает больше 21, он «сгорает». В случае ничьей игрок и дилер остаются при своих.
Карты имеют такие «ценовые» значения:
от двойки до десятки — от 2 до 10 соответственно;
у туза — 1 или 11 (11 пока общая сумма не больше 21, далее 1);
у «картинок» (король, дама, валет) — 10.
Напишите программу, которая вначале случайным образом выдаёт пользователю и компьютеру по две карты и затем запрашивает у пользователя действие: взять карту или остановиться. На экран должна выдаваться информация о руке пользователя. После того как игрок останавливается, выведите на экран победителя.
Представление карты реализуйте с помощью класса.
Дополнительно: сделайте так, чтобы карты не могли повторяться.
Задача 9. Крестики-нолики
Напишите программу, которая реализует игру «Крестики-нолики». Да, это всё условие задачи.