state gummball winner
This commit is contained in:
parent
e93f2da595
commit
ffaefeac75
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
Поведенческий паттерн проектирования, который позволяет объектам менять поведение в зависимости от своего состояния. Извне создаётся впечатление, что изменился класс объекта.
|
Поведенческий паттерн проектирования, который позволяет объектам менять поведение в зависимости от своего состояния. Извне создаётся впечатление, что изменился класс объекта.
|
||||||
|
|
||||||
|
Паттерн **Состояние** управляет изменением поведения объекта при изменении его внутреннего состояния. Внешне это выглядит так, словно объект меняет свой класс.
|
||||||
|
|
|
@ -6,10 +6,10 @@ import soldoutstate, noquarterstate, hasquarterstate, soldstate, state;
|
||||||
|
|
||||||
class GumballMachine
|
class GumballMachine
|
||||||
{
|
{
|
||||||
State soldOutState;
|
State soldOutState; // нет жевательных шариков
|
||||||
State noQuarterState;
|
State noQuarterState; // нет четвертака (есть жевательные шарики, готов к продаже)
|
||||||
State hasQuarterState;
|
State hasQuarterState; // вставлен четвертак (либо купить шарик, либо вернуть моентку)
|
||||||
State soldState;
|
State soldState; // продажа шарика (выдача шарика)
|
||||||
|
|
||||||
State state;
|
State state;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
@ -50,7 +50,7 @@ class GumballMachine
|
||||||
|
|
||||||
void releaseBall()
|
void releaseBall()
|
||||||
{
|
{
|
||||||
writeln("A gumball comes rolling out the slot...");
|
writeln("Из щели выкатывается шарик жевательной резинки...");
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
{
|
{
|
||||||
count = count - 1;
|
count = count - 1;
|
||||||
|
@ -65,7 +65,8 @@ class GumballMachine
|
||||||
void refill(int count)
|
void refill(int count)
|
||||||
{
|
{
|
||||||
this.count += count;
|
this.count += count;
|
||||||
writeln("The gumball machine was just refilled; its new count is: ", this.count);
|
writeln("Автомат для жевательных резинок был только что заправлен; его новое количество составляет: ",
|
||||||
|
this.count);
|
||||||
state.refill();
|
state.refill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,7 +104,7 @@ class GumballMachine
|
||||||
{
|
{
|
||||||
string s;
|
string s;
|
||||||
s ~= "\nMighty Gumball, Inc.";
|
s ~= "\nMighty Gumball, Inc.";
|
||||||
s ~= "\nJava-enabled Standing Gumball Model #2004";
|
s ~= "\nD-enabled Standing Gumball Model #2004";
|
||||||
s ~= "\nInventory: " ~ count.to!string ~ " gumball";
|
s ~= "\nInventory: " ~ count.to!string ~ " gumball";
|
||||||
if (count != 1)
|
if (count != 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,30 +14,30 @@ class HasQuarterState : State
|
||||||
|
|
||||||
void insertQuarter()
|
void insertQuarter()
|
||||||
{
|
{
|
||||||
writeln("You can't insert another quarter");
|
writeln("Вы не можете вставить еще один четвертак");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ejectQuarter()
|
void ejectQuarter()
|
||||||
{
|
{
|
||||||
writeln("Quarter returned");
|
writeln("Четвертак возвращен");
|
||||||
gumballMachine.setState(gumballMachine.getNoQuarterState());
|
gumballMachine.setState(gumballMachine.getNoQuarterState());
|
||||||
}
|
}
|
||||||
|
|
||||||
void turnCrank()
|
void turnCrank()
|
||||||
{
|
{
|
||||||
writeln("You turned...");
|
writeln("Вы дернули за рычаг...");
|
||||||
gumballMachine.setState(gumballMachine.getSoldState());
|
gumballMachine.setState(gumballMachine.getSoldState());
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispense()
|
void dispense()
|
||||||
{
|
{
|
||||||
writeln("No gumball dispensed");
|
writeln("Жевательная резинка не выдается");
|
||||||
}
|
}
|
||||||
|
|
||||||
void refill() {}
|
void refill() {}
|
||||||
|
|
||||||
override string toString() const
|
override string toString() const
|
||||||
{
|
{
|
||||||
return "waiting for turn of crank";
|
return "ожидание поворота рычага";
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,29 +14,29 @@ class NoQuarterState : State
|
||||||
|
|
||||||
void insertQuarter()
|
void insertQuarter()
|
||||||
{
|
{
|
||||||
writeln("You inserted a quarter");
|
writeln("Вы вставили четвертак");
|
||||||
gumballMachine.setState(gumballMachine.getHasQuarterState());
|
gumballMachine.setState(gumballMachine.getHasQuarterState());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ejectQuarter()
|
void ejectQuarter()
|
||||||
{
|
{
|
||||||
writeln("You haven't inserted a quarter");
|
writeln("Вы не вставили четвертак");
|
||||||
}
|
}
|
||||||
|
|
||||||
void turnCrank()
|
void turnCrank()
|
||||||
{
|
{
|
||||||
writeln("You turned, but there's no quarter");
|
writeln("Вы дернули за рычаг, но нет четвертака");
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispense()
|
void dispense()
|
||||||
{
|
{
|
||||||
writeln("You need to pay first");
|
writeln("Сначала вам нужно заплатить");
|
||||||
}
|
}
|
||||||
|
|
||||||
void refill() { }
|
void refill() { }
|
||||||
|
|
||||||
override string toString() const
|
override string toString() const
|
||||||
{
|
{
|
||||||
return "waiting for quarter";
|
return "в ожидании четвертака";
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,22 +14,22 @@ class SoldOutState : State
|
||||||
|
|
||||||
void insertQuarter()
|
void insertQuarter()
|
||||||
{
|
{
|
||||||
writeln("You can't insert a quarter, the machine is sold out");
|
writeln("Вы не можете вставить четвертак, машина распродана");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ejectQuarter()
|
void ejectQuarter()
|
||||||
{
|
{
|
||||||
writeln("You can't eject, you haven't inserted a quarter yet");
|
writeln("Вы не можете извлечь, вы еще не вставили четвертак");
|
||||||
}
|
}
|
||||||
|
|
||||||
void turnCrank()
|
void turnCrank()
|
||||||
{
|
{
|
||||||
writeln("You turned, but there are no gumballs");
|
writeln("Вы дернули за рычаг, но там нет жевательных шариков");
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispense()
|
void dispense()
|
||||||
{
|
{
|
||||||
writeln("No gumball dispensed");
|
writeln("Жевательная резинка не выдается");
|
||||||
}
|
}
|
||||||
|
|
||||||
void refill()
|
void refill()
|
||||||
|
@ -39,6 +39,6 @@ class SoldOutState : State
|
||||||
|
|
||||||
override string toString() const
|
override string toString() const
|
||||||
{
|
{
|
||||||
return "sold out";
|
return "продано";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,17 +14,17 @@ class SoldState : State
|
||||||
|
|
||||||
void insertQuarter()
|
void insertQuarter()
|
||||||
{
|
{
|
||||||
writeln("Please wait, we're already giving you a gumball");
|
writeln("Пожалуйста, подождите, мы уже даем вам жвачку");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ejectQuarter()
|
void ejectQuarter()
|
||||||
{
|
{
|
||||||
writeln("Sorry, you already turned the crank");
|
writeln("Извините, вы уже дернули за рычаг");
|
||||||
}
|
}
|
||||||
|
|
||||||
void turnCrank()
|
void turnCrank()
|
||||||
{
|
{
|
||||||
writeln("Turning twice doesn't get you another gumball!");
|
writeln("Дважды дернув за рычаг вы не получите другую жвачку!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispense()
|
void dispense()
|
||||||
|
@ -36,7 +36,7 @@ class SoldState : State
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
writeln("Oops, out of gumballs!");
|
writeln("Упс, кончились жевательные шарики!");
|
||||||
gumballMachine.setState(gumballMachine.getSoldOutState());
|
gumballMachine.setState(gumballMachine.getSoldOutState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,6 @@ class SoldState : State
|
||||||
|
|
||||||
override string toString() const
|
override string toString() const
|
||||||
{
|
{
|
||||||
return "dispensing a gumball";
|
return "раздача жевательной резинки";
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
module app;
|
||||||
|
|
||||||
|
import gumballmachine;
|
||||||
|
import std.stdio : writeln;
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
GumballMachine gumballMachine = new GumballMachine(10);
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
gumballMachine.insertQuarter();
|
||||||
|
gumballMachine.turnCrank();
|
||||||
|
|
||||||
|
writeln(gumballMachine);
|
||||||
|
}
|
|
@ -0,0 +1,124 @@
|
||||||
|
module gumballmachine;
|
||||||
|
|
||||||
|
import std.stdio : writeln;
|
||||||
|
import std.conv : to;
|
||||||
|
import soldoutstate, noquarterstate, hasquarterstate, soldstate, state, winnerstate;
|
||||||
|
|
||||||
|
class GumballMachine
|
||||||
|
{
|
||||||
|
State soldOutState; // нет жевательных шариков
|
||||||
|
State noQuarterState; // нет четвертака (есть жевательные шарики, готов к продаже)
|
||||||
|
State hasQuarterState; // вставлен четвертак (либо купить шарик, либо вернуть моентку)
|
||||||
|
State soldState; // продажа шарика (выдача шарика)
|
||||||
|
State winnerState; // выдача дополнительного шарика при 10% вероятности
|
||||||
|
|
||||||
|
State state;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
this(int numberGumballs)
|
||||||
|
{
|
||||||
|
soldOutState = new SoldOutState(this);
|
||||||
|
noQuarterState = new NoQuarterState(this);
|
||||||
|
hasQuarterState = new HasQuarterState(this);
|
||||||
|
soldState = new SoldState(this);
|
||||||
|
winnerState = new WinnerState(this);
|
||||||
|
|
||||||
|
this.count = numberGumballs;
|
||||||
|
if (numberGumballs > 0)
|
||||||
|
{
|
||||||
|
state = noQuarterState;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state = soldOutState;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertQuarter()
|
||||||
|
{
|
||||||
|
state.insertQuarter();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejectQuarter()
|
||||||
|
{
|
||||||
|
state.ejectQuarter();
|
||||||
|
}
|
||||||
|
|
||||||
|
void turnCrank()
|
||||||
|
{
|
||||||
|
state.turnCrank();
|
||||||
|
state.dispense();
|
||||||
|
}
|
||||||
|
|
||||||
|
void releaseBall()
|
||||||
|
{
|
||||||
|
writeln("Из щели выкатывается шарик жевательной резинки...");
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
count = count - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int getCount()
|
||||||
|
{
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void refill(int count)
|
||||||
|
{
|
||||||
|
this.count += count;
|
||||||
|
writeln("Автомат для жевательных резинок был только что заправлен; его новое количество составляет: ",
|
||||||
|
this.count);
|
||||||
|
state.refill();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setState(State state)
|
||||||
|
{
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getState()
|
||||||
|
{
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getSoldOutState()
|
||||||
|
{
|
||||||
|
return soldOutState;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getNoQuarterState()
|
||||||
|
{
|
||||||
|
return noQuarterState;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getHasQuarterState()
|
||||||
|
{
|
||||||
|
return hasQuarterState;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getSoldState()
|
||||||
|
{
|
||||||
|
return soldState;
|
||||||
|
}
|
||||||
|
|
||||||
|
State getWinnerState()
|
||||||
|
{
|
||||||
|
return winnerState;
|
||||||
|
}
|
||||||
|
|
||||||
|
override string toString() const
|
||||||
|
{
|
||||||
|
string s;
|
||||||
|
s ~= "\nMighty Gumball, Inc.";
|
||||||
|
s ~= "\nD-enabled Standing Gumball Model #2004";
|
||||||
|
s ~= "\nInventory: " ~ count.to!string ~ " gumball";
|
||||||
|
if (count != 1)
|
||||||
|
{
|
||||||
|
s ~= "s";
|
||||||
|
}
|
||||||
|
s ~= "\n";
|
||||||
|
s ~= "Machine is " ~ state.to!string ~ "\n";
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
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 "ожидание поворота рычага";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
module noquarterstate;
|
||||||
|
|
||||||
|
import std.stdio : writeln;
|
||||||
|
import state, gumballmachine;
|
||||||
|
|
||||||
|
class NoQuarterState : State
|
||||||
|
{
|
||||||
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
|
this(GumballMachine gumballMachine)
|
||||||
|
{
|
||||||
|
this.gumballMachine = gumballMachine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertQuarter()
|
||||||
|
{
|
||||||
|
writeln("Вы вставили четвертак");
|
||||||
|
gumballMachine.setState(gumballMachine.getHasQuarterState());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejectQuarter()
|
||||||
|
{
|
||||||
|
writeln("Вы не вставили четвертак");
|
||||||
|
}
|
||||||
|
|
||||||
|
void turnCrank()
|
||||||
|
{
|
||||||
|
writeln("Вы дернули за рычаг, но нет четвертака");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispense()
|
||||||
|
{
|
||||||
|
writeln("Сначала вам нужно заплатить");
|
||||||
|
}
|
||||||
|
|
||||||
|
void refill() { }
|
||||||
|
|
||||||
|
override string toString() const
|
||||||
|
{
|
||||||
|
return "в ожидании четвертака";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
module soldoutstate;
|
||||||
|
|
||||||
|
import std.stdio : writeln;
|
||||||
|
import state, gumballmachine;
|
||||||
|
|
||||||
|
class SoldOutState : State
|
||||||
|
{
|
||||||
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
|
this(GumballMachine gumballMachine)
|
||||||
|
{
|
||||||
|
this.gumballMachine = gumballMachine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertQuarter()
|
||||||
|
{
|
||||||
|
writeln("Вы не можете вставить четвертак, машина распродана");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejectQuarter()
|
||||||
|
{
|
||||||
|
writeln("Вы не можете извлечь, вы еще не вставили четвертак");
|
||||||
|
}
|
||||||
|
|
||||||
|
void turnCrank()
|
||||||
|
{
|
||||||
|
writeln("Вы дернули за рычаг, но там нет жевательных шариков");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispense()
|
||||||
|
{
|
||||||
|
writeln("Жевательная резинка не выдается");
|
||||||
|
}
|
||||||
|
|
||||||
|
void refill()
|
||||||
|
{
|
||||||
|
gumballMachine.setState(gumballMachine.getNoQuarterState());
|
||||||
|
}
|
||||||
|
|
||||||
|
override string toString() const
|
||||||
|
{
|
||||||
|
return "продано";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
module soldstate;
|
||||||
|
|
||||||
|
import std.stdio : writeln;
|
||||||
|
import state, gumballmachine;
|
||||||
|
|
||||||
|
class SoldState : State
|
||||||
|
{
|
||||||
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
|
this(GumballMachine gumballMachine)
|
||||||
|
{
|
||||||
|
this.gumballMachine = gumballMachine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertQuarter()
|
||||||
|
{
|
||||||
|
writeln("Пожалуйста, подождите, мы уже даем вам жвачку");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejectQuarter()
|
||||||
|
{
|
||||||
|
writeln("Извините, вы уже дернули за рычаг");
|
||||||
|
}
|
||||||
|
|
||||||
|
void turnCrank()
|
||||||
|
{
|
||||||
|
writeln("Дважды дернув за рычаг вы не получите другую жвачку!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispense()
|
||||||
|
{
|
||||||
|
gumballMachine.releaseBall();
|
||||||
|
if (gumballMachine.getCount() > 0)
|
||||||
|
{
|
||||||
|
gumballMachine.setState(gumballMachine.getNoQuarterState());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeln("Упс, кончились жевательные шарики!");
|
||||||
|
gumballMachine.setState(gumballMachine.getSoldOutState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void refill() {}
|
||||||
|
|
||||||
|
override string toString() const
|
||||||
|
{
|
||||||
|
return "раздача жевательной резинки";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
module state;
|
||||||
|
|
||||||
|
interface State
|
||||||
|
{
|
||||||
|
void insertQuarter();
|
||||||
|
void ejectQuarter();
|
||||||
|
void turnCrank();
|
||||||
|
void dispense();
|
||||||
|
|
||||||
|
void refill();
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
module winnerstate;
|
||||||
|
|
||||||
|
import std.stdio : writeln;
|
||||||
|
import state, gumballmachine;
|
||||||
|
|
||||||
|
class WinnerState : State
|
||||||
|
{
|
||||||
|
GumballMachine gumballMachine;
|
||||||
|
|
||||||
|
this(GumballMachine gumballMachine)
|
||||||
|
{
|
||||||
|
this.gumballMachine = gumballMachine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void insertQuarter()
|
||||||
|
{
|
||||||
|
writeln("Пожалуйста, подождите, мы уже даем вам жвачку");
|
||||||
|
}
|
||||||
|
|
||||||
|
void ejectQuarter()
|
||||||
|
{
|
||||||
|
writeln("Пожалуйста, подождите, мы уже даем вам жвачку");
|
||||||
|
}
|
||||||
|
|
||||||
|
void turnCrank()
|
||||||
|
{
|
||||||
|
writeln("Дважды дернув за рычаг вы не получите другую жвачку!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void dispense()
|
||||||
|
{
|
||||||
|
gumballMachine.releaseBall();
|
||||||
|
if (gumballMachine.getCount() == 0)
|
||||||
|
{
|
||||||
|
gumballMachine.setState(gumballMachine.getSoldOutState());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gumballMachine.releaseBall();
|
||||||
|
writeln("ТЫ ПОБЕДИТЕЛЬ! У тебя есть два жевательных шарика на твой четвертак");
|
||||||
|
if (gumballMachine.getCount() > 0)
|
||||||
|
{
|
||||||
|
gumballMachine.setState(gumballMachine.getNoQuarterState());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
writeln("Упс, кончились шарики!");
|
||||||
|
gumballMachine.setState(gumballMachine.getSoldOutState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void refill() {}
|
||||||
|
|
||||||
|
override string toString() const
|
||||||
|
{
|
||||||
|
return "раздаем два жевательных шарика за твою четвертак, потому что ТЫ ПОБЕДИТЕЛЬ!";
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue