지난번에 이어서, 동전던지기 게임을 만들어볼게요
지난 시간에, 0과 1 사이의 임의의 숫자를 만들고
반올림 해서 정수로 만들었어요
그렇게 하면 0 또는 1을 얻을 수 있죠
그리고 이 동전을 동그라미로 그리고 나오는 숫자에 따라 보라색이나 노란색으로 표시되도록 했지요
그 코드가 여기 있네요
정수가 0이면 보라색으로
그렇지 않으면 노란색으로 색칠하네요
동전을 여기에 그렸죠
이제 3개의 면을 가진 동전을 생각해봐요
3번째 면을 추가해봅시다
숫자를 0부터 2까지 만들어볼거에요
그리고 반올림하면 정수는 0, 1, 2 라는 값을 가질 수 있어요
그런데 지금의 코드를 살펴보면 2가지 경우만 고려하고 있어요
정수가 0이면 보라색 그렇지 않으면 노란색이죠
이제 0이 아닌 경우는 1 또는 2가 되겠네요
이전에 했던 걸 똑같이 적용해볼까요?
else 블럭 안에, if-else를 다시 써 넣는거에요
정수가 1이면 노란색으로 칠해요
그렇지 않으면 빨간색으로 칠해요
0이면 보라색
그렇지 않고 1이면 노란색
0도 아니고 1도 아닌 경우는 2이죠 그러면 빨간색을 칠해요
버튼을 여러번 눌러볼게요 작동하네요!
동전의 면을 더 추가하고 싶네요
숫자를 0부터 3까지 만들고
else 블럭 안에 if-else를 또 추가 하면 되겠죠
그렇게 else로 감싸진 코드가 수없이 만들어 지게 됩니다
아... 정말 좋지 않은 코드네요. 보기 안좋아요!
코드는 읽기 쉽고 간결해야 합니다 못생기면 안되요
그래서 무언가를 해볼거에요
만약 우리가 else 블록 안에 하나의 if 문 혹은 하나의 if-else문만 있고 그 밖에는 아무것도 없다면
즉, stroke 함수나 또 다른 if-else 구문이 없다면
우리는 하나의 if 문 혹은 거기에 하나의 else 블록이 붙어 있을 수는 있어요
그렇다면, 이 if 구문과 바로 앞줄을 합칠 수 있어요 그리고 이렇게 됩니다
else if (integer ===1) 그러면 색깔을 노란색으로 채웁니다
마지막 else는 다른것과 연결되지 않고 그냥 제일 마지막에 와서 붙습니다
좋습니다! 결국, 이 코드는 정수가 0이면 보라색
그렇지 않고 1이면 노란색
그렇지 않으면 (즉, 이들 두가지가 다 false이면) 빨간색을 칠하는 겁니다
restart 를 여러번 눌렀는데, 잘 작동하는거 보이죠?
좋습니다! 이것의 장점은 우리가 원하는 만큼 else-if룰 추가해서 사용할 수 있다는 겁니다
동전의 면을 쉽게 늘릴 수 있겠죠
한번 해봅시다. 숫자를 0~3까지 만들고
else 블럭을 하나 더 추가했어요 else if (integer === 2)
이 경우에는 빨간색을 칠해요
마지막 else 블럭은 정수가 3인 경우입니다
이 경우에는 파란색을 칠해볼께요. 좋습니다!
이렇게 하려면, 제일 먼저 if 문으로부터 시작하고
그 다음에 원하는 만큼의 else-if 가 추가 되고요
제일 마지막 것은 옵션입니다
하지만 else가 없으면, 앞의 모든 경우가 거짓인 경우에
아무것도 실행하지 않겠죠
하지만 이 코드에는 else가 있으니까
이 경우에는 해당 코드블럭이 실행되겠죠
이 경우는 if, else-if, else 를 사용하지 않고
if 만을 사용해도 됩니다
왜냐하면 정수는 0, 1, 2, 3 일수밖에 없으니까요
모든 경우의 수가 겹치는 게 없어요 상호 배타적입니다
이 코드 블럭들 중에서 하나만 실행됩니다
하지만 항상 그런 경우들만 있는 것은 아닙니다
숫자를 반올림 해서 정수로 만들지 않으면 어떻게 될까요?
예를 들어 숫자를 반올림 해서 정수로 만드는 것 없이 하면 어떻게 될까요?
다른 부분은 화면을 그리는 코드입니다
새로운 규칙을 만들어볼게요
여전히 숫자는 0부터 3까지 만들거에요
그리고 여기 숫자 선 위에 마크를 해볼께요
그 숫자가 0과 1사이의 값이면 보라색을 칠할거에요
1부터 2까지는 노란색
2부터 3까지는 빨간색을 칠할거에요
이것을 if와 else-if 구문으로 어떻게 표현할 수 있을까요?
숫자가 1보다 작은 경우는
이 경우는 0 과 3 사이에 있죠
이 경우는 보라색을 칠하고
그렇지 않고 2보다 작으면 노란색으로
그렇지 않으면 빨간색으로 칠할거에요
원하는 대로 작동하죠?
1보다 작으면 이 범위에 있구요
그렇지 않고, 1과 같거나 크고 2보다 작으면
이 범위에 있죠. 노란색을 칠할거에요
그렇지 않으면, 2보다 큰 크거나 같은 경우입니다 이 범위에 해당하죠
이렇게 바꾸면 ( else if 에서 else를 삭제하면 ) 숫자가 2보다 작은 경우라고 하면 안됩니다
숫자가 3보다 작은 경우라고 해서도 안되죠
숫자가 1보다 작은 경우는 2보다 작은 경우에 포함되니까요
물론 3보다 작은 경우에도 포함되죠
그러니 동전은 항상 빨간색으로 표시되겠죠
이 경우에는 else-if 를 쓰는게 편리하겠죠