Есть ответ 👍

Контрольная работа #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
Посмотреть ответы 1

Ответы на вопрос:

kylie333
4,6(69 оценок)

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

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS