컴퓨터에게 계속 숫자를 주면서 이거 맞아? 아니면 이거야? 하면서 놀 수 있는 놀이를 소개하고자 합니다. 술자리에서 소주 병뚜껑에 있는 숫자를 기준으로 그것보다 작다 크다 하면서 걸린 사람이 술 먹는 게임 해보신 적 다들 있으시죠? 그것과 매우 유사합니다.
일단 첫번째로 우리가 컴퓨터에게 숫자를 던져줘야하기때문에 스캐너를 써먹어야겠습니다. Scanner sc = new Scanner(System.in)으로 sc를 만들어주면 이걸 이용해서 우리는 키보드로 숫자를 타닥타닥 적을 수 있게됩니다.
이번 케이스에는 두개의 숫자가 필요하겠죠? 바로 컴퓨터가 랜덤하게 만들어서 가지고 있는 숫자와 우리가 무작위하게 던져볼 숫자 두 개를 randNum, userNum으로 미리 선언했습니다. 그 다음으로는 boolean을 써먹게 됩니다. 맞냐 아니냐 확실하게 말해달라는 의미에서 변수 이름은 clear입니다. 선언과 함께 초기화를 했는데 false로 합니다. 왜 false로 하냐구요?
위에 구글링한 자료를 보면 boolean 배열은 boolean 자료형만 담을 수 있으며 그 배열의 디폴트값이 false입니다. 따라서 boolean 배열은 항상 false로 초기화가 됩니다. 참조형의 초기 디폴트값은 null인것처럼요~
아무튼 여기까지 선언부분이었고 다음에는 랜덤한 숫자를 만들어야겠습니다. Math.random()에 100을 곱해서 우리가 원하는 2자리 숫자를 만들어줬습니다. 100을 곱해주지 않으면 Math.random() 자체는 double형이기 때문에 소수점 아래로 수많은 숫자들과 마주하게 될것입니다. 끝에 1을 더해줘서 0이 나오지 않게 한번 더 막아줍니다.
총 10번의 기회만 주도록 만들고 싶습니다. while문을 써서 10번이 넘어가면 실행이 되지 않도록 만들어줍니다. 콘솔창에 숫자를 입력해달라는 문구를 적고 우리가 4,20,134 등 예측할 수 없는 랜덤한 숫자를 입력하면 그것이 userNum이 됩니다. 사용자가 입력한 숫자라는 뜻이죠. 우리가 던진 숫자가 대략 비슷하게 맞았는지 확인하고 싶습니다. 술자리에서도 나만 주구장창 숫자를 말하면 재미가 없겠죠? 그런것처럼 컴퓨터도 나에게 힌트를 좀 줬으면 좋겠습니다.
msg 변수를 선언해봅니다. 내가 던진 숫자와 컴퓨터가 혼자서 정하고 속으로만 품고 있는 숫자와 비교하게끔 해서 msg를 0,1,2로 넘어가게 합니다. 이는 뒤에서 스위치케이스에 적용하기 쉽게 하기 위해서입니다. 물론 msg가 2번이 되면 userNum이 randNum보다 크지도 , 작지도 않다는 뜻이므로 정답을 맞춘것이니 더 이상의 진행은 필요가 없겠죠? 따라서 break문을 걸어줍니다.
마지막으로 스위치케이스를 통해서 정리할 수 있습니다. 예를 들어 나는 45를 말했는데 컴퓨터는 67을 가지고 있었습니다. 그러면 내가 생각한 숫자가 더 작기 때문에 msg는 1이 나오고 "너무 작습니다"가 뜨겠죠. 그러면 아 45보다는 큰 수를 입력해야 하는구나 생각이 들 것입니다. 그런식으로 맞춰나갈 수 있겟습니다.
마무리하자면 clear가 true일 때, 즉 내가 낸 값이 컴퓨터가 낸 값과 동일할때 게임은 클리어가 됩니다.
운이 좋다면..10번 안에 숫자를 맞출수도 있겠죠? 눈치가 재빨라야 할지도 모르겠습니다.
'Java > 기초 Java' 카테고리의 다른 글
[기초 자바]wrapper class (0) | 2021.05.11 |
---|---|
[기초 자바] 중복되지 않는 랜덤숫자 쉽게 만들기 (1) | 2021.05.10 |
[기초 자바] 키보드 입력과 비트연산자 (0) | 2021.04.08 |
[기초 자바] 구구단 만들기 (0) | 2021.04.08 |
[기초 자바]public &private static 구조 확실히 알기 (0) | 2021.04.08 |