В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
aizy2
aizy2
29.08.2020 18:29 •  Информатика

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

Показать ответ
Ответ:
Иркутяночка52017
Иркутяночка52017
13.08.2021 22:25
В двоичной системе: 1243(10)=2^10+2^7+2^6+2^4+2^3+2^1+1 = 1024+128+64+16+8+2+1 = 1243(10) =10011011011(2)
В восьмиричной системе:  разбиваете двоичное представление на группы по 3 бита справа налево
011  = 3
011  = 3
011  = 3
10   = 2
Тогда в восьмиричной системе: 2333(8) = 2*8^3+3*8^2+3*8^1+3 = 1024+192+24+3=1243(10)
В шестнадцатиричной системе:  разбиваете двоичное представление на группы по 4 бита справа налево
1011 = B = 11(10)
1101 = D(16) = 13(10)
100  = 4
Тогда в шестнадцатиричной системе
4DB(16) = 4*16^2+13*16^1+11 =1024+208+11=1243(10)
0,0(0 оценок)
Ответ:
одногоВоло
одногоВоло
15.11.2021 23:54
1) Если x^3 < 10, то (x+1)^3 > 20. Это верно при x = 2. 
2^3 < 10, 3^3 > 20
2) Если x(x+1) > 10, то (x+1)(x+2) < 10. Это верно при x = -4
(-4)(-3) = 12 > 10; (-3)(-2) = 6 < 10 
Но при x = 2 будет ложная посылка (2*3 > 10 - это ложно),
из которой следует ложный вывод 3*4 < 10.
Поэтому импликация верна. ответ x = 2
3) Если x(x+1)(x+2) > 25, то x < x-1
Это сложнее. x < x-1 - ложно при любом х.
Импликация будет истинной, только если посылка ложная.
x(x+1)(x+2) > 25 - должно быть ложно. Это при x = 2.
x(x+1)(x+2) = 2*3*4 = 24.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота