몽환화

#가위바위보 게임(5판3선승, 3판2선승, 단판승) 본문

JAVA 때려잡기

#가위바위보 게임(5판3선승, 3판2선승, 단판승)

hyeii 2023. 1. 24. 01:38
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