Задание
Реализовать эмуляцию вендингового аппарата с возможностью внести сумму, выбрать напиток, выбрать ингредиенты, ожидать приготовление, получить заказанный напиток и сдачу (если есть)
Функционал программы
Например:
- внести сумму
- выбрать напиток
- выбрать ингредиенты напитка (если они есть)
- дождаться приготовления напитка
- получить напиток
- получить сдачу (если есть)
Фрагмент программного кода
using CoffeeMachine.Data;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace CoffeeMachine
{
public partial class Form1 : Form
{
/// <summary> сумма внесённая для оплаты </summary>
private int countMoneySend = 0;
/// <summary> Текущий выбранный напиток </summary>
private ButtonDrink currSelect;
/// <summary> величина текущего оставшегося времени для приготовления </summary>
private int WaitSecond = -1;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// первоначальные настройки
buttonDrink1.Set(new Espresso());
buttonDrink2.Set(new Latte());
buttonDrink3.Set(new Americano());
buttonDrink4.Set(new GreenTea());
buttonDrink5.Set(new Cappuccino());
buttonDrink6.Set(new Water());
buttonDrink7.Set(new TeaWithLemon());
buttonDrink8.Set(new Milkshake());
var rnd = new Random();
var all = new[] {1, 2, 5, 10};
int count = 0;
// генерируем содержимое кошелька
while (count<60)
{
// генерируем 1 из денежных единиц
int volume = all[rnd.Next(0, all.Length - 1)];
// суммируем
count += volume;
// создаем нужную монету
Money m = new Money(volume);
// добавляем на панель монетку
pWallet.Controls.Add(m);
// подписываемся на её нажатие
m.Click+= MOnClick;
}
}
// нажатие на монету
private void MOnClick(object sender, EventArgs e)
{
Money m = sender as Money;
if(m==null) return;
// увеличим сумму внесенонй оплаты
countMoneySend += m.Value;
lcountMoneySend.Text = countMoneySend.ToString("C");
m.Dispose();
if (lComment.Text.Length > 0)
{
}
}
// выбор напитка
Скриншот архива с проектом

Пояснения по запуску программы
Программа работает без дополнительных настроек.
Телеграм
-