module hasquarterstate; import std.stdio : writeln; import std.random : Random, uniform, unpredictableSeed; import state, gumballmachine; class HasQuarterState : State { GumballMachine gumballMachine; Random randomWinner; this(GumballMachine gumballMachine) { this.gumballMachine = gumballMachine; randomWinner = Random(unpredictableSeed); } void insertQuarter() { writeln("Вы не можете вставить еще один четвертак"); } void ejectQuarter() { writeln("Четвертак возвращен"); gumballMachine.setState(gumballMachine.getNoQuarterState()); } void turnCrank() { writeln("Вы дернули за рычаг..."); if ((uniform(0, 10, randomWinner) == 0) && (gumballMachine.getCount() > 1)) { gumballMachine.setState(gumballMachine.getWinnerState()); } else { gumballMachine.setState(gumballMachine.getSoldState()); } } void dispense() { writeln("Жевательная резинка не выдается"); } void refill() {} override string toString() const { return "ожидание поворота рычага"; } }