티스토리 뷰

이번시간에는 가위바위보게임을 작성해 봅시다! 0,1,2를 입력해서 가위바위보를 하는 프로그램인데요 ~ 컴퓨터는 랜덤으로 3중에 하나를 내게되는데 무엇을 냈는지 출력이 되구요 제가 컴퓨터를 2번더 이기거나 컴퓨터가 저를 2번 더 이기면 끝나는 프로그램입니다! 한번 작성해 봅시다!



이런식으로 작성을 해봅시다! 아무래도 random()함수를 써야하겠죠? 그전에 혹시나 까먹으신 분들을 위해 Math.random() 에 대해서 언급을 해드릴게요! Math.random()은 난수를 출력하는 메소드로써 [0,1)까지 임의의 실수를 반환합니다. 0~1인데 0은포함되는데 1은 포함이 되지 않죠! 조금더 응용을 하자면 강제적인 형변환을 하면 저희가 많이쓰는 정수형을 출력 할 수 있습니다. (int)(Math.random())을 한다면 Math.random()은 항상 0~0.99999999999...까지 이기에 소숫점부터는 사라지게되고 0만 출력이 되지만, Math.random()*10 을 한다면 0~9.999999... 까지 출력이되고 앞에 (int)를 붙여준다면, 0~9까지 출력이 됩니다. 또한 뒤에 +1을한다면 즉 

(int)(Math.random()*10+1) 을 한다면, 1~10까지 출력이 됩니다. 다시말해

(int)(Math.random()*스케일+최소값) 이라고 생각하시면 쉬울겁니다 다시 문제로 돌아가 보죠 0,1,2 중에서 난수로 한가지 수를 출력해줘야하는데요 그렇다면, (int)(Math.random()*3)을 하게 되면 되는군요! 그렇게 컴퓨터의 난수를 생성을 하였지만 큰틀을 보시면 계속 반복하는 무한루프를 만들어야합니다. 그렇다면 대략적인 틀을 작성해 봅시다. 




자! 이렇게 표현할수 있겠죠? 그런데 여기서 문제가 조금있네요.. 


1. computer와 user간의 승패 

2. 누가 2번더 이겼고 2번더 이겼다면 무한루프를 나가고 프로그램 종료시키기


먼저 첫번째 computer와 user와 승패에 대해서 어떻게 가릴지에 관해 생각해 봅시다! 일단 computer와 user가 같은 것을 내었을때 draw를 시켜줘야 하겠네요 비기는것을 제외하고 user가 이기는것을 제외하면 computer가 이기는 것 임으로, 이런식은 어떤가요?




비기는것을 user가 이기는것을 제외하고는 computer가 이긴다고 말할 수 있겠죠?

그런데 이렇게 짜는 것도 좋지만 다른 방법도 혹시 있지 않을까요? 혹시 이렇게 짠 코드는 어떤가요?



흠.. 조금더 복잡해 보이는군요 그냥 처음 작성한것이 나을수도 있겠습니다. 단지 다른 방법의 논리로 접근을 하여서 잠시 보여드리고 싶었네요 ㅎㅎ


그렇다면 두번째 user와 computer 가 두번더 이기는 것 에 대해서는 어떻게 표현을 할까요??위에서 userwin 과 computerwin 이라는 정수를 0으로 받고, 두수의 차이가 2가 나는지 무한루프가 시작될때 판별해주면 되겠군요.



고생하셨습니다!!


'Java 공부일지' 카테고리의 다른 글

Not palindrome Prime print program  (0) 2018.04.01
Palindrome 판단 프로그램  (0) 2018.04.01
숫자 피라미드 만들기( feat.수열 )  (2) 2018.03.25
정적멤버  (0) 2018.03.16
같은크기의 Box인지 확인하기  (0) 2018.03.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/09   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함