돌아오신 것을 환영합니다
이번 영상에서는 가위바위보 애플리케이션을 이어서 진행해 보겠습니다
이번엔 특히 플레이어의 선택과 컴퓨터의 선택을 비교해 볼 것입니다
어떻게 할 수 있을까요?
하지만 그 전에 when문을 먼저 알아보도록 하겠습니다
그럼 이것을 when으로 대체해 봅시다
이는 그저 또 다른 방법 중 하나입니다
종속되는 숫자와 비교를 사용할 때 말입니다
이 경우 숫자가 1,2,3 이런 식으로 사용되므로 종속형 숫자 비교라고
할 수 있습니다
그리고 그럴 경우 IDE가
즉 Anddroid 스튜디오가 when문을 사용하라고 제안합니다
when문의 구조는 보시다시피 그저 when 키워드를 사용하고
괄호 안에 비교 혹은 확인을 할 변수를 넣습니다
그리고 만약 이 randomNumber이 1이라면 이 코드를 실행하고
randomNumber가 2라면 이 코드를 실행하는 것이고
그리고 randomNumber가 3일 땐 이 코드를 실행하는 것입니다
그러니까 로직은 동일합니다
표시되는 방식이 다른 것뿐입니다
그리고 조금 더 정돈되어 보입니다
더 깔끔해 보입니다
그래서 그 동일한 개념을 when문에 사용할 것이지만 조금 더 복잡해질 것입니다
그러면 val winner를 사용해 봅시다
winner(승자)라는 새로운 변수를 생성하여 승자를 저장하도록 합니다
어떻게 값을 입력할 수 있을까요?
그리고 when의 장점은 그 결과를 바로 변수에 할당할 수 있다는 것입니다
바로 보여드리겠습니다
이 when에 같은 원리를 적용해 볼 것이지만
여기에 했던 것과 동일하게는 아닙니다
이번에는 약간 다른 접근으로 비교를 먼저 하고 그것에 따라
실행을 할 것입니다
어떻게 하면 그렇게 할 수 있을까요?
when에다 playerChoice == computerChoice라고 써줍니다
그럼 무슨 일이 일어날까요?
이 경우 "Tie"(무승부)라고 말합니다
winner에 바로 할당하는 것입니다
우리가 이렇게 명시하기 때문에 이 val winner는 String을 담을 것입니다
그러니까 이는
when(언제든) 조건 A가 성사되면 "Tie"를 winner에 할당하라는 것입니다
이번엔 playerChoice가 Rock(바위)일 때
물론 ==를 사용해야 합니다
==를 사용해 비교를 할 수 있는 것입니다
그럼
이 == 기호가 왼쪽과 오른쪽을 비교합니다
만약 둘이 같다면 True를 반환하고
만약 같지 않다면 False를 반환합니다
만약 True라면 이 when문이 실행되어 "Tie"가 winner에 저장됩니다
playerChoice == "Rock"(바위)고 동시에 computerChoice == "Scicssors"(가위)일 때
winner(승자)는 Player(플레이어)가 될 것입니다
이 또한 String(문자열)로 넣어져야 합니다
여기까지 두 가지의 상황이었습니다
두 플레이어가 같은 선택을 하여 무승부가 나오는
것인데
이는 아마 3가지의 상황이 포함됩니다
네 3가지입니다
자 그럼
이 경우도 플레이어가 이깁니다
이렇게 모든 상황들을 나열해 볼 수 있습니다
예를 들어 바위와 바위가 대항하는 상황도 있고
보와 보가 대항하는 상황도 있으며
가위끼리 대항하는 상황도 있습니다
그리고 이 3가지의 상황이 이 한 줄로 여겨지는 것입니다
그 모든 상황이 서로가 같은 경우이므로 무승부인 것입니다
끝입니다
그 모든 상황을 수동적으로 작성하지 않아도 됩니다
그렇게 해도 되지만 그건 시간 낭비입니다
그러니까 이런 식으로 작성하면 훨씬 더 시간을 단축할 수
있습니다
그리고 다른 상황이 남아있습니다
사실 몇 가지가 더 남았습니다 아직까지는 플레이어가
바위나
가위를 선택하는 상황만 나열했지만
가위를 선택하는 상황도 있을 것입니다
그리고 플레이어가 이기는 상황들만 나열했습니다
나머지 경우들에는 컴퓨터가 이기는 것입니다
그러면 그걸 작성해 볼 텐데 직접 보면 더 이해하기 쉬울 것입니다
플레이어가 가위, 바위, 보를 선택한 상황들이 있습니다
그리고 이 부분을 마저 작성해 보자면 computerChoice는
무엇이어야 할까요?
가위가 이기는 것은 무엇일까요?
가위는 보를 이깁니다
그리고 이 경우 플레이어가 이긴다고 써줍니다
이 상황들은 전부 플레이어가 이기는 상황들이었습니다
그럼 나머지 경우들에서는
else를 사용해 Computer(컴퓨터)가 이긴다고 해줍니다
winner는 Computer가 되는 것입니다
즉 이 winner 변수가 Computer를 담는 것입니다
자
이런 식으로 when 문을 활용하는 것입니다
선택들을 비교합니다
그러니까 무승부이거나 플레이어가 이기는 3가지의 상황을 다루거나 그 외 나머지는
모두 플레이어가 지는 상황입니다
이런 식으로 작성해도 됩니다
만약 플레이어가 바위를 선택했을 때 컴퓨터가 보를 선택하면
진다고 말입니다
그렇게 모든 상황을 일일이 적어도 되지만 그럴 필요가 없습니다
총 2의 3승 만큼의 상황들이 있는데
즉 8가지의 상황이 있지만
5줄로도 충분히 완성할 수 있었습니다
그 8가지를 전부 나열하지 않아도 됐습니다
물론 그렇게 하셔도 됩니다
하지만 논리적으로 생각하고 코드를 보완해 보면 더 적은 양의 코드를 사용하게 되고
보시다시피 그것이 코딩의 미학입니다
그럼 이제 사용자에게 누가 이겼는지 알려주도록 하겠습니다
하지만 여기서 잠시 쉬는 시간을 갖겠습니다
그리고 다음 영상에서 마무리 지어보겠습니다
그럼
다음 영상에서 뵙겠습니다