Ваша задача — реализовать программу ASP.NET, которая проверяет план побега участника игры-квеста.
Квест-комната состоит из трех объектов, которые могут использовать участники игры:
1. Замок — который нужно открыть правильным кодом. Если код неправильный, замок зависает в закрытом состоянии на 30 минут.
2. Телефон — игроки могут использовать его, чтобы спросить, откроет ли данный код замок. Когда игроки отправят сообщение, содержащее правильный код, они получат ответ: «Это правильный код!» в течение 30-40 минут.
3. Смотрите — игроки должны использовать это для измерения времени.
Игроки получают три кода, из которых только один правильный.
У них есть 80 минут, чтобы выйти из квест-комнаты. Чтобы успешно открыть замок, им следует использовать телефон для отправки каждого кода на проверку с интервалом в 11 минут.
Игроки должны подсчитывать время, прошедшее до получения информации о правильном коде.
Например:
| Время | Действие
| 0 | Отправить код 1
| 11 | Отправить код 2
| 22 | Отправить код 3
| 43 | Получите сообщение «Это правильный код!»
Это означает, что «код 2» — правильный код, который игроки должны использовать для открытия замка (и двери).
Требования
Ваша задача — реализовать логику трех элементов, составляющих квест-комнату, следующим образом:
Смотреть
— должно содержать свойство «static int Time», которое представляет время истекло (в минутах).
- Должен содержать метод «Wait(int time)», который принимает время, в течение которого игроки хотят ждать («int»), и увеличивает свойство «Time» на это значение.
- Первоначально (при создании объекта) свойство «Time» должно быть установлено в 1.
Padlock
- Должно содержать свойство «Static string Code», которое представляет код, открывающий замок.
- Должен принять в конструктор параметр «string code» и сохранить его в свойстве «Code».
- Должен содержать метод «State? Open(string code)», который возвращает одно из следующих состояний:
=> «State.STUCK» - если использованный код неверен или время, прошедшее с момента предыдущей попытки, не превышает 30 минут (независимо от того, правильности кода);
=> "State.OPEN" - если код правильный и замок не находится в состоянии "STUCK".
- Для управления временем в объекте "Watch.Time" используется свойство "Watch.Time".
Phone
- Должен содержать метод "SendMessage(string message)", который представляет действие отправки код для проверки.
- Должен содержать метод «строка CheckMessage()», который возвращает:
=> «Нет новых сообщений», когда с момента отправки правильного кода прошло менее 30 минут;
=> «Это правильный код!» через случайный промежуток времени от 30 до 40 минут после отправки правильного кода.
- Метод «CheckMessage()» должен возвращать «Это правильный код!» только один раз для каждого отправленного правильного кода, но выбранное случайное время никогда не должно быть одинаковым (например, если правильный код отправляется дважды в один и тот же момент, возможно, должно быть два ответа через 31 и 33 минуты).
- Для управления временем в объекте «Телефон» используйте свойство «Watch.Time».
- Для проверки правильности кода используйте свойство Padlock.Code.