Сейчас вам необходимо написать немного кода. В связи с тем, что мы идем последовательно, сейчас вам нельзя объявлять свои функции, использовать классы и объекты, и много чего ещё. По сути, в вашем распоряжении только массивы и циклы. Ну а также условные операторы, арифметические операторы и по мелочи.
Такое ограничение поставлено не просто так. Я напоминаю, что это эволюционные примеры, которые сначала решают задачу самыми примитивными способами, с которыми знаком начинающий разработчик, а только потом последовательно вводят новые темы, показывая зачем оно надо.
Из-за того, что мы разрабатываем консольное приложение, у нас меньше пространства для творчества. Но при этом всё сильно упрощается. Мы не программируем настоящий автомат, а мы скорее притворяемся, что у нас есть настоящий автомат. Эта условность может поначалу смутить, так как некоторые вещи мы будем представлять по-разному. Но не стоит паниковать. Когда мы обсуждаем что-то, мы концентрируемся только на том что обсуждаем, абстрагируясь от ненужного нам. Это позволяет нам разбирать различные темы не вдаваясь в ненужные детали строения настоящего автомата. В программировании мы вообще очень часто притворяемся и делаем вид, что что-то является чем-то.
Чтобы вы понимали, что от вас требуется, давайте я вам задам жесткие рамки с точки зрения использования того, что у вас получится. Сделаю я это с помощью команд, которые можно отправлять вашему автомату и описанных реакций на них. Вы поймете, что вы закончили сразу, как только ваш автомат сможет выполнять перечисленное ниже.
Под отправкой команды я подразумеваю ввод строк в консоли:
AddMoney
Добавляет на баланс автомата деньги:
GetChange
Автомат обнуляет баланс и выдаёт сдачу доступными монетами, номиналом: 1, 2, 5 и 10 рублей:
BuyGood {id} {count}
Автомат выдает товар в определенном количестве и снимает деньги с баланса:
При старте автомат сам загружается монетками, товарами и выбирается какой-то из модулей оплаты. Всего есть два модуля: карта и наличка.
- Если оплата картой – то баланс зачисляется, при этом количество доступных монет не изменяется:
- Если оплата наличкой, то при добавлении баланса нужно указать какими монетами происходит оплата и они добавляются в список доступных монет.
Помните модуль проверки выдачи? Та штука, которая проверяет, что вы действительно получили заказ? А помните, я говорил, что мы часто притворяемся? Так вот, вам так же нужно притворится, что у вас есть такой модуль, и, что примерно 3% заказов не выдаются. Если заказ не был выдан, то деньги с баланса пользователя не снимаются.