Контрольная работа #2
Вам нужно написать программу-игру, которая имитирует битву героя и дракона. Информация о ходе битвы должна выводиться в консоль. Программа пишется постепенно, каждый этап добавляет новые функции в ту же программу. Задание считается выполненным на 100%, если выполнены условия всех уровней (кроме бонуса). Бонус засчитывается, только если решены остальные этапы, поэтому добейтесь сначала работо основного кода, а потом беритесь за бонусы, если время осталось. Все указания на этапах являются обязательными.
Исходные данные:
dragon = {
'hp': 2000, # жизненная энергия, запас здоровья
'defence': 120, # защита
'str': 150, # сила
'weapon': 0 # оружие
}
hero = {
'hp': 1000,
'defence': 100,
'str': 120,
'weapon': 250,
'shield': 150 # щит
}
Исходные данные можно менять по своему желанию, чтобы проверить разные варианты работы программы. При проверке значения также могут и будут меняться (!).
Общие указания:
Игровой цикл реализуется с бесконечного цикла
Сообщения в консоли должны быть максимально информативны. Они могут содержать информацию о количестве HP у дракона и героя, номер хода, кто ходит, кто сколько урона нанёс и т.д.
Можно использовать разделители (строки типа "==============" и дополнительные переносы строк "\n"), чтобы было понятно, когда закончился один ход и начался следующий.
Аккуратное форматирование вывода приветствуется.
Этап 1
На первом этапе вам достаточно написать главный игровой цикл, за который производятся только ходы игрока. Каждый ход игрока выполняется по следующим правилам:
Герой пытается попасть по дракону. Вероятность успеха - 75%
Если герой попал:
Урон = сила героя + оружие героя - защита дракона
У дракона отнимается здоровье, равное урону
Отображается сообщение о нанесённом уроне.
Если герой не попал:
Отображается сообщение о том, что герой не попал
В конце хода вывести сообщение об оставшемся здоровье дракона.
Вероятность можно определять с а, например:
if random.random() < 0.6: ... # 60%
if random.random() < 0.3: ... # 30%
Или так:
if random.randint(1, 100) <= 60: ... # 60%
if random.randint(1, 100) <= 30: ... # 30%
и т.д.
Главный цикл должен повторять ходы героя до тех пор, пока у дракона не останется 0 хп.
Если у дракона больше нет жизненной энергии:
Показать сообщение, что герой победил
Выйти из цикла.
Указания:
Для вывода информации о драконе напишите отдельную функцию display_dragon_info(). На первом этапе достаточно выводить его здоровье.
Напишите функцию modify_health, которая принимает два аргумента:
Персонажа, у которого нужно изменить показатель здоровья
Количество жизненной энергии, на которое нужно изменить этот показатель. Внутри себя функция всегда прибавляет этот показатель. Таким образом, если нужно уменьшить показатель здоровья, то в функцию нужно передать отрицательное число.
Функция должна следить, чтобы показатель здоровья не стал меньше 0, даже если нанесённый урон больше оставшегося здоровья.
Функция отвечает только за изменение показателей здоровья персонажей и не должна выводить никаких сообщений.
В сообщениях о нанесённом уроне урон должен выводиться без знака минус.
Пример работы функции:
modify_health(dragon, -50) # нанести 50 ед урона дракону
При выводе сообщения:
"Дракон получил 50 ед. урона" # без знака минус
Этап 2
На этом этапе вам нужно добавить ход дракона. Ход дракона выполняется после хода игрока и проверки на то, что дракон ещё живой (hp дракона больше 0). Дракон может с шансом 50/50 выбрать одно из двух действий:
Атаковать:
Урон = сила дракона + оружие дракона - защита героя
Нанесённый урон вычитается из здоровья героя
Вывести сообщение о нанесённом уроне
Спать:
Вывести сообщение о том, что дракон свой ход
В конце хода вывести сообщение об оставшемся здоровье героя.
После хода дракона в основном цикле нужно проверять количество оставшегося здоровья у героя.
Если у героя закончилась жизненная энергия:
Показать сообщение, что герой проиграл
Выйти из цикла.
Можно выводить сообщения о состоянии обоих персонажей: и героя, и дракона, после каждого хода.
Указания:
Для вывода информации о герое напишите отдельную функцию display_hero_info()
Для вывода информации о драконе используйте функцию display_dragon_info()
Вынесите ходы дракона и героя в отдельные функции.
По желанию вынесите проверку количества HP у персонажа (ещё жив или нет) в отдельную функцию.
Используйте функцию modify_health, написанную на 1 этапе, для нанесения урона герою.
В конце этого этапа главный цикл может выглядеть примерно так:
while True:
hero_turn() # ход героя
# если дракон умер: break
dragon_turn() # ход дракона
# если герой умер: break
нужен только 2 этап
230
286
Ответы на вопрос:
Var a,n1,n2,n3,i: integer; begin for i: =1 to 10 do begin write('введите ',i, ' число '); readln(a); if a = 0 then n1: =n1+1 else if a< 0 then n2: =n2+1 else n3: =n3+1; end; writeln('равных 0 : ',n1); writeln('меньше 0 : ',n2); writeln('больше 0 : ',n3); end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
kolosochok101.10.2022 01:26
-
zelenskiy1000019.11.2020 13:35
-
Dinara26080328.07.2020 20:04
-
krioss23.03.2023 23:07
-
Батюс22.03.2022 05:09
-
lisniczova24.07.2021 06:37
-
teenwolf1805.04.2020 09:17
-
olka5211.06.2020 17:00
-
tim141532005377413.12.2020 08:48
-
Комарова2316.12.2021 17:48
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.