일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 덕타이핑
- 훅
- 스티커
- 프로그래머스
- 백준 #알고리즘 #자바스크립트
- React
- 자바스크립트
- useContext
- 리코일
- useLayoutEffect
- 드래그앤드롭
- javascript
- recoil
- 알고리즘
- usedebugvalue
- 알고리즘 #프로그래머스 #코딩테스트 #자바스크립트
- 타입스크립트
- 백준
- useRef
- Suspense
- 알고리즘 #코딩테스트 #프로그래머스 #자바
- react-beautiful-dnd
- 리액트
- 다이나믹프로그래밍
- 완전탐색
- 위상정렬
- 프로그래머스 #알고리즘 #자바스크립트
- Today
- Total
몽환화
#가위바위보 게임(5판3선승, 3판2선승, 단판승) 본문
package unhappy;
import java.util.Scanner;
public class Practice2 {
public static void main(String[] args) {
// 가위바위보 다시해보기
Scanner sc = new Scanner(System.in);
System.out.println("~~가위바위보 게임~~");
System.out.print("닉네임을 입력하세요 : ");
String name = sc.next();
System.out.println("아래 보기 중 하나를 고르세요.");
System.out.println();
System.out.println("1. 5판 3승");
System.out.println("2. 3판 2승");
System.out.println("3. 1판 1승");
System.out.print("번호를 입력하세요 : ");
int num = sc.nextInt();
System.out.println();
int totalCount = 0;
int winCount = 0;
if(num == 1) {
totalCount = 5;
winCount = 3;
}else if(num == 2) {
totalCount = 3;
winCount = 2;
}else if(num == 3) {
totalCount = 1;
winCount = 1;
}
int SCISSOR = 1;
int ROCK = 2;
int PAPER = 3;
int computerWinCount = 0;
int userWinCount = 0;
System.out.println("게임을 시작합니다!");
while(totalCount > 0 && userWinCount < winCount && computerWinCount < winCount ) {
System.out.print("가위바위보 중 하나 입력 : ");
String user = sc.next();
int computer = (int)(Math.random()*3)+1;
int userCount = 0;
if(user.equals("가위")) {
userCount = SCISSOR;
}else if(user.equals("바위")) {
userCount = ROCK;
}else if(user.equals("보")) {
userCount = PAPER;
}
if(userCount == computer) {
System.out.println("비겼습니당");
}else if(userCount == SCISSOR && computer == PAPER) {
System.out.println("이겼습니당");
userWinCount += 1;
}else if(userCount == ROCK && computer == SCISSOR) {
System.out.println("이겼습니당");
userWinCount += 1;
}else if(userCount == PAPER && computer == ROCK) {
System.out.println("이겼습니당");
userWinCount += 1;
}else {
System.out.println("졌습니당");
computerWinCount += 1;
}
totalCount -= 1;
}
if(userWinCount > computerWinCount) {
System.out.println("###"+name+"쨩이 이겼당~~");
}else if(userWinCount < computerWinCount) {
System.out.println("### 컴퓨터가 이겼당ㅠㅠ");
}else if(userWinCount == computerWinCount) {
System.out.println("### 컴퓨터랑 비겼당!!");
}
}
}
while (조건식) {
수행 내용;
}
( )의 내용이 true라면 반복, false가 될 때 까지 { }를 반복 수행
47 | totalCount > 0 && userWinCount < winCount && computerWinCount < winCount
&& 로 엮여 있으므로 세 조건 모두 true여야 while문을 반복하고, 셋 중 하나라도 false라면 while문을 멈춘다.
totalCount > 0
: 게임 횟수인 totalCount가 양수여야 함. 0과 같거나 작아지면 while문 멈춤
ex) 5판 3선승 시 처음의 totalCount는 5이다. while문을 반복하며 totalCount는 하나씩 작아지고, 1일때 마지막으로 while문을 수행하게 되며 0이 될 시 while문을 빠져나온다.
userWinCount < winCount
: 사용자가 이긴 횟수가 선승 횟수보다 작아야 반복한다. 즉 사용자가 이긴 횟수가 선승 횟수와 같아지면 while문 멈춤. 이 경우 사용자가 이긴 횟수가 컴퓨터가 이긴 횟수보다 많을 것이므로 사용자가 이긴 결론 도출
ex) 5판 3선승 시 선승 횟수인 winCount는 3이다. totalCount를 감소시키며 while문을 반복하되 사용자가 이기면 userWinCount가 하나씩 증가하므로, 이 userWinCount가 선승 횟수인 3과 같아지면 아직 totalCount가 0이 아니더라도 결과가 결정되었기에 while문을 빠져나온다.
computerWinCount < winCount
: 마찬가지로 컴퓨터가 이긴 횟수가 선승 횟수보다 작아야 반복한다. 컴퓨터가 이긴 횟수가 선승 횟수와 같아지면 while문 멈춤. 이 경우 컴퓨터가 이긴 횟수가 사용자가 이긴 횟수보다 많을 것이므로 컴퓨터가 이긴 결론 도출
ex) 3판 2선승 시 선승 횟수인 winCount는 2이다. totalCount를 감소시키며 while문을 반복하되 컴퓨터가 이기면 computerWinCount가 하나씩 증가하므로, 이 computerWinCount가 선승 횟수인 2와 같아지면 아직 totalCount가 0이 아니더라도 결과가 결정되었기에 while문을 빠져나온다.
1을 선택했으므로 5판 3승제에 해당한다
5판 중 처음 3판을 모두 졌기에 다음 경기 필요 없이 바로 져버렸다!!!!
ㅂㄷ이 결과 얻으려고 몇번을 했는지 모르겠음
사실 테스트할때 너무 답답해서 그냥 컴퓨터 랜덤변수만 주작했는뎈ㅋㅋㅋㅋㅋint 값 새로넣어서
이거 캡쳐할때는 찐으로 돌렸다..주작안했다...
'JAVA 때려잡기' 카테고리의 다른 글
230127 컬렉션 (0) | 2023.01.28 |
---|---|
230126 인터페이스, 제네릭 (0) | 2023.01.27 |
230125 추상클래스 (0) | 2023.01.25 |
230119 객체배열관리 (0) | 2023.01.21 |