private void dispense() { if (state == GumballState.SOLD) { Console.WriteLine("알맹이가 나가고 있습니다."); count--; if (count <= 0) { Console.WriteLine("더 이상 알맹이가 없습니다."); state = GumballState.SOLDOUT; } else { state = GumballState.NOQUARTER; } } else if (state == GumballState.NOQUARTER) { Console.WriteLine("동전을 넣어주세요."); } else if (state == GumballState.SOLDOUT) { Console.WriteLine("매진입니다."); } else if (state == GumballState.HASQUARTER) { Console.WriteLine("알맹이가 나갈 수 없습니다."); } }
public GumballMachine(int count) { this.count = count; if (count > 0) { state = GumballState.NOQUARTER; } }
public GumballMachine(int count) { //Initializing States HAS_QUARTER = new HasQuarterState(this); NO_QUARTER = new NoQuarterState(this); SOLD = new SoldState(this); SOLD_OUT = new SoldOutState(this); WINNER = new WinnerState(this); //State when Created. this.count = count; if (count > 0) { State = NO_QUARTER; } }
public void EjectQuarter() { if (state == GumballState.HASQUARTER) { Console.WriteLine("동전이 반환됩니다."); state = GumballState.NOQUARTER; } else if (state == GumballState.NOQUARTER) { Console.WriteLine("동전을 넣어주세요."); } else if (state == GumballState.SOLD) { Console.WriteLine("이미 알맹이를 뽑으셨습니다."); } else if (state == GumballState.SOLDOUT) { Console.WriteLine("동전을 넣지 안으셨습니다. 동전이 반환되지 안습니다."); } }
public void InsertQuarter() { if (state == GumballState.HASQUARTER) { Console.WriteLine("동전은 한 개만 넣어주세요."); } else if (state == GumballState.NOQUARTER) { state = GumballState.HASQUARTER; Console.WriteLine("동전을 넣으셨습니다."); } else if (state == GumballState.SOLDOUT) { Console.WriteLine("매진되었습니다. 다음 기회에 이용해 주세요"); } else if (state == GumballState.SOLD) { Console.WriteLine("잠깐만 기다려 주세요. 알맹이가 나가고 있습니다."); } }
public void TurnCrank() { if (state == GumballState.SOLD) { Console.WriteLine("손잡이를 한번만 돌려주세요"); } else if (state == GumballState.NOQUARTER) { Console.WriteLine("동전을 넣어주세요."); } else if (state == GumballState.SOLDOUT) { Console.WriteLine("매진되었습니다."); } else if (state == GumballState.HASQUARTER) { Console.WriteLine("손잡이를 돌리셨습니다."); state = GumballState.SOLD; dispense(); } }
public void Refill(int balls) { count += balls; state = GumballState.NOQUARTER; }
//Set State public void SetGumballState(GumballState state) { State = state; }