Exemple #1
0
        public void InsertQuarter()
        {
            switch (_currentState)
            {
            case GumbalMachineState.SoldOut:
                Console.WriteLine("You can't insert a quarter, the machine is sold out");
                break;

            case GumbalMachineState.NoQuarter:
                Console.WriteLine("You inserted a quarter");
                ++QuartersCount;
                _currentState = GumbalMachineState.HasQuarter;
                break;

            case GumbalMachineState.HasQuarter:
                if (QuartersCount < MaxQuartersCount)
                {
                    Console.WriteLine("Inserting quarter");
                    ++QuartersCount;
                }
                else
                {
                    Console.WriteLine("Max quarters count in machine");
                }
                break;

            case GumbalMachineState.Sold:
                Console.WriteLine("Please wait, we're already giving you a gumball");
                break;
            }
        }
Exemple #2
0
        public void EjectQuarter()
        {
            switch (_currentState)
            {
            case GumbalMachineState.SoldOut:
                if (QuartersCount != 0)
                {
                    Console.WriteLine("Ejecting quarters");
                    QuartersCount = 0;
                }
                else
                {
                    Console.WriteLine("Machine not has quarters");
                }
                break;

            case GumbalMachineState.NoQuarter:
                Console.WriteLine("You haven't inserted a quarter");
                break;

            case GumbalMachineState.HasQuarter:
                Console.WriteLine("Quarters returned");
                QuartersCount = 0;
                _currentState = GumbalMachineState.NoQuarter;
                break;

            case GumbalMachineState.Sold:
                Console.WriteLine("Sorry you already turned the crank");
                break;
            }
        }
Exemple #3
0
        private void Dispense()
        {
            switch (_currentState)
            {
            case GumbalMachineState.SoldOut:
            case GumbalMachineState.HasQuarter:
                Console.WriteLine("No gumball dispensed");
                break;

            case GumbalMachineState.NoQuarter:
                Console.WriteLine("You need to pay first");
                break;

            case GumbalMachineState.Sold:
                Console.WriteLine("A gumball comes rolling out the slot");
                --BallsCount;
                if (BallsCount == 0)
                {
                    Console.WriteLine("Oops, out of gumbals");
                    _currentState = GumbalMachineState.SoldOut;
                }
                else if (QuartersCount == 0)
                {
                    _currentState = GumbalMachineState.NoQuarter;
                }
                else
                {
                    _currentState = GumbalMachineState.HasQuarter;
                }
                break;
            }
        }
Exemple #4
0
        public void AddBalls(uint ballsCount)
        {
            switch (_currentState)
            {
            case GumbalMachineState.SoldOut:
                Console.WriteLine($"We are have added {ballsCount} gumball{( ballsCount != 1 ? "s" : "" )}");
                BallsCount   += ballsCount;
                _currentState = GumbalMachineState.NoQuarter;
                break;

            case GumbalMachineState.NoQuarter:
            case GumbalMachineState.HasQuarter:
                Console.WriteLine($"We are have added {ballsCount} gumball{( ballsCount != 1 ? "s" : "" )}");
                BallsCount += ballsCount;
                break;

            case GumbalMachineState.Sold:
                Console.WriteLine("Please wait, we're giving you a gumball now");
                break;
            }
        }
Exemple #5
0
        public void TurnCrank()
        {
            switch (_currentState)
            {
            case GumbalMachineState.SoldOut:
                Console.WriteLine("You turned but there's no gumballs");
                break;

            case GumbalMachineState.NoQuarter:
                Console.WriteLine("You turned but there's no quarter");
                break;

            case GumbalMachineState.HasQuarter:
                Console.WriteLine("You turned...");
                --QuartersCount;
                _currentState = GumbalMachineState.Sold;
                Dispense();
                break;

            case GumbalMachineState.Sold:
                Console.WriteLine("Turning twice doesn't get you another gumball");
                break;
            }
        }
Exemple #6
0
 public GumbalMachine(uint ballsCount)
 {
     BallsCount    = ballsCount;
     _currentState = BallsCount > 0 ? GumbalMachineState.NoQuarter : GumbalMachineState.SoldOut;
 }