Катеринка228841
07.04.2021 23:49

Контрольная работа #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 этап

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Чевапчичи
18.06.2020 04:57
Все модели можно разбить на два больших класса: модели предметные (материальные) и модели информационные. Предметные модели воспроизводят геометрические, физические и другие свойства объектов в материальной форме (глобус, анатомические муляжи, модели кристаллических решеток, макеты зданий и сооружений и др.) .
Информационные модели представляют объекты и процессы в образной или знаковой форме.
Образные модели (рисунки, фотографии и др. ) представляют собой зрительные образы объектов, зафиксированные на каком-либо носителе информации (бумаге, фото- и кинопленке и др.) . Широко используются образные информационные модели в образовании (вспомните учебные плакаты по различным предметам) и науке, где требуется классификация объектов по их внешним признакам (в ботанике, биологии, палеонтологии и др.) .
Знаковые информационные модели строятся с использованием различных языков (знаковых систем) . Знаковая информационная модель может быть представлена в форме текста (например, программы на языке программирования) , формулы (например, второго закона Ньютона F=m·a), таблицы (например, периодической таблицы элементов Д. И. Менделеева) и так далее.
Иногда при построении знаковых информационных моделей используются одновременно несколько различных языков. Примерами таких моделей могут служить географические карты, графики, диаграммы и пр. Во всех этих моделях используются одновременно как язык графических элементов, так и на протяжении своей истории человечество использовало различные и инструменты для создания информационных моделей. Эти постоянно совершенствовались. Так, первые информационные модели создавались в форме наскальных рисунков, в настоящее же время информационные модели обычно строятся и исследуются с использованием современных компьютерных технологий.
0,0(0 оценок)
Ответ:
Viola320
31.10.2022 17:01
#include <iostream>
using namespace std;

void reduce(int* m, int* n) {
    int a,b,c;
    a=*m; b=*n;
// НОД a b  - алгоритм Евклида
    do {
        c=a%b;  a=b;  b=c;  }
    while (b>0);
    *m/=a;  *n/=a;
}        

int main() {
    int m,n;
    cout<<"input m n   "; cin>>m>>n;
    cout<<m<<"/"<<n<<" = ";
    reduce(&m,&n);
    if (n>1) cout<<m<<"/"<<n<<endl;
    else cout<<m<<endl;
    system("pause");
    return 0;
}

input m n   25 15
25/15 = 5/3
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота