LHJ

I'm a FE developer.

4.1.8 if 문

19 Apr 2020 » js_lj

이제 거의 다 됐습니다!
돈도 걸었고 주사위도 굴렸습니다.
이제 남은 일은 딴 돈을 가져오는 것뿐입니다.
hand 배열에는 무작위로 선택된 그림(face) 이 세 개 있습니다.
따라서 for 루프를 한 번 더 써서 이 중에 맞춘 것이 있는지 알아봐야 합니다.
if 문을 사용하면 됩니다.
이번에는 else 절이 필요 없습니다.
마지막 순서도는 [그림 4-6]과 같습니다.

이미지

if…else 문과 if 문의 차이를 보십시오.
if…else 문에서는 모든 분기가 행동으로 연결됐지만, if 문에서는 분기 중 하나만 행동으로 연결됩니다.
이 순서도를 코드로 옮기면 게임이 완성됩니다.

let winnings = 0;
for (let die=0; die<hand.length; die++) {
	let face = hand[die];
	if(bets[face] > 0) winnings = winnings + bets[face];
}
funds = funds + winnings;

여기서는 for 루프의 조건을 체크할 때 3보다 작은지 확인하지 않고 hand.length 보다 작은지 확인했습니다(3이긴 합니다만).
이 부분의 목적은 맞춘 것이 있는지 체크하는 것입니다.
지금은 주사위를 세 번 굴리는 것이 게임의 규칙이지만, 규칙이 바뀔 수도 있고, 보너스로 주사위를 더 굴린다거나 벌칙으로 주사위 숫자를 제한할 수도 있을 겁니다.
요점은 이겁니다.
이 코드를 더 범용적으로 만들기가 쉬워집니다.
규칙을 바꿔서 주사위를 굴리는 횟수가 달라지더라도 이 코드를 고칠 필요는 없습니다.
주사위를 몇 번 굴리든 상관없이 이 코드는 우리가 원하는 대로 동작합니다.