Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2021, 09:21
Новичок на форуме
Отправить личное сообщение для Logitech228 Посмотреть профиль Найти все сообщения от Logitech228
 
Регистрация: 21.08.2021
Сообщений: 1

Ведьмак против Гриффина
Исходные данные:

const Griffin = {

hp: 2000, // Жизненная энергия

defense: 120, // Защита

str: 150, // Сила

weapon: 0 // Оружие

};

const Witcher = {

hp: 1000,

defense: 100,

str: 120,

weapon: 250,

};

Цель задания:

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

Терминология:

HP - жизненная энергия (Health Points)

Указания:

Игровой цикл реализуется с помощью бесконечного цикла.

Сообщения, выводимые в консоль, должны быть максимально информативны. Они могут содержать в себе информацию о том, сколько осталось HP у грифона, у ведьмака, сколько было нанесено урона, и так далее.
Можно использовать разделители (строки типа "============"), чтоб было понятно, когда закончился один ход и начался следующий.

Уровень 1

На этом уровне достаточно сделать главный игровой цикл, за который производится только ход ведьмака.

Алгоритм игры на данном этапе следующий:

Игровой цикл:

Ведьмак пытается попасть по грифону.
Вероятность успеха: 75%.
Если ведьмак попал:

Рассчитывается урон из формулы:
урон = сила ведьмака + оружие ведьмака - защита грифона
У грифона отнимается здоровье, равное нанесенному урону с помощью метода changeHP (см. ниже указания).
Отображается сообщение о нанесенном уроне и оставшейся HP грифона.

Если ведьмак не попал:

Отображается сообщение о том, что ведьмак не попал по грифону.

Если у грифона больше нет жизненной энергии:

Отобразить сообщение, что ведьмак победил.
Выйти из игрового цикла.

Указания:

Для вывода информации о ведьмаке и грифоне, реализовать у них методы getStatus, которые должны возвращать сводную информацию в произвольном виде.
Пример:

> Witcher.getStatus();
< Witcher: 850 HP

> Griffin.getStatus();
< Griffin: 1250 HP

Реализовать метод changeHP у ведьмака и грифона, который будет принимать один аргумент - количество HP, которое нужно отнять. Этот метод надо написать так, чтобы количество HP не могло стать меньше нуля.

Уровень 2

Добавить ход грифона.

Ход грифона производится после хода ведьмака и проверки на то, что у грифона число HP не упало до нуля.

Грифон может делать одно из двух действий (с одинаковым шансом):

Атаковать:

Урон рассчитывается из формулы
урон = сила грифона + оружие грифона - защита ведьмака
Нанесенный урон вычитается из здоровья ведьмака
Вывести сообщение о нанесенном уроне и оставшейся HP ведьмака

Летать:

Вывести сообщение о том, что грифон не стал атаковать ведьмака.

Затем, в основной цикл после действия грифона добавить:

Проверять, если у ведьмака закончилась жизненная энергия:

Вывести сообщение о том, что ведьмак проиграл.
Выйти из игрового цикла

Указания:

Вынести действия ведьмака и грифона в отдельные функции.
Использовать метод changeHP для изменения здоровья ведьмака.
Использовать метод getStatus для отображения здоровья ведьмака.

Уровень 3

Добавить возможность выбирать игроку (с помощью prompt), что ведьмак будет делать:

Атаковать (в этом случае производятся все действия, как и в 1-м уровне задания) (то есть, с 75% шансом он может попасть, а может не попасть, и т.п.)
Использовать знак "Игни". При этом, ведьмак наносит урон грифону, который рассчитывается с помощью метода getIgniDamage (см. ниже). "Промахнуться" при этом нельзя. После вызова метода, нанести полученное значение урона грифону с помощью changeHP, а затем вывести два значения - сколько урона нанесено и информацию о жизненной энергии грифона.
Слушать Лютика. При этом, ведьмак не атакует, а в консоль выводится одно случайное сообщение из массива (см. ниже)
Убежать. При этом игра заканчивается, отобразить в консоли сообщение, а также информацию о жизненной энергии ведьмака и грифона.

Указания:

Выбор действия нужно сделать с помощью prompt, который принимает числовые значения (например, 1 - атаковать, 2 - знак "Игни", и т.п.) Если значение не совпало ни с одним действием, спросить игрока заново.
Во всех случаях, даже если ведьмак выбрал пункт "Слушать Лютика", после действия ведьмака должно происходить действие грифона, как описано во втором уровне этого задания. То есть, вы улучшаете только ход ведьмака, грифон же по-прежнему на каждом ходе действует автоматически.

Создать метод getIgniDamage, который возвращает случайное число от 150 до 200.
Случайные сообщения Лютика:

Хватит валять дурака, пора уже тушить пожар в этой программе.
Говорят, грифон никогда не наступит на лежащего ведьмака.
Когда скромняга бард, отдыхал от дел, с Геральтом из Ривии, он песню эту пел...
Трус умирает сто раз. Мужественный человек – лишь однажды.
Людям для жизни необходимы три вещи: еда, питье и сплетни.
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2021, 10:06
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Logitech228,
Не знаешь что такое цикл и консоль или что?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди против роботов: к 2050 году начнется борьба за работу, предупредили ученые join Оффтопик 176 09.01.2019 19:23
Apache против nginx torsar Оффтопик 13 13.12.2015 14:10
JS против jquery. Раскрасить четные строки eXtreme Общие вопросы Javascript 13 02.06.2015 14:46
Масштабирование против центрирования prowoke Общие вопросы Javascript 3 27.12.2012 14:40