가위바위보 - JAVA

전일규·2022년 5월 26일
0

        Scanner scanner = new Scanner(System.in);

        System.out.println("======[GAME START]======");

        int userChoice, randomNum;
        int errorCount = 0, gameCount = 1;
        int win = 0, draw = 0, lose = 0;
        double odds;
        String user, computer;

        while(true) {
            randomNum = (int)(Math.random()*3)+1;
            if(errorCount == 5) {
                System.out.println("error!! 프로그램을 종료합니다.");
                return;
            } // if

            System.out.println("가위, 바위 보 중 번호로 선택하세요.");
            System.out.println("1. 가위 2. 바위 3. 보");
            System.out.println(">");
            userChoice = scanner.nextInt();
            if(userChoice == 1) {
                user = "가위";
            } else if(userChoice == 2) {
                user = "바위";
            } else if(userChoice == 3) {
                user = "보";
            } else {
                System.out.println("1 ~ 3 안에서 선택해주세요.");
                errorCount++;
                continue;
            } // else

            if(randomNum == 1) {
                computer = "가위";
            } else if(randomNum == 2) {
                computer = "바위";
            } else if(randomNum == 3) {
                computer = "보";
            } else {
                System.out.println("system error");
                continue;
            } // else
            errorCount = 0;

            String result = battle(userChoice, randomNum);

            if(result.equals("win")) {
                win++;
            } else if(result.equals("draw")) {
                draw++;
            } else if(result.equals("lose")) {
                lose++;
            } else {
                System.out.println("error");
            } // else

            System.out.println("==== [결과 : "+ result + "] ====");
            System.out.println("user : " + user + " computer : " + computer);

            System.out.println("게임을 계속 하시겠습니까 ? [ Y / N ]");
            System.out.println(">");

            String yseNo = scanner.next();

            if(yseNo.equalsIgnoreCase("Y")) {
                gameCount++;
            } else {
                odds = (double)(win) / (double)(gameCount) * 100;
                System.out.println("==== 최종결과 ====");
                System.out.println("게임수 : " + gameCount);
                System.out.printf("승 : %d  패 : %d  무 : %d  승률 : %.2f", win, lose, draw, odds);
                break;
            } // else
        } // while
        scanner.close();
    } // main


    static String battle(int user, int computer) {
        String result = null;
        if(user > 0 && user <= 3) {
            if((user == 1 && computer == 3) || (user == 2 && computer == 1) || (user == 3 && computer == 2)) {
                result = "win";
            } else if(user == computer) {
                result = "draw";
            } else {
                result = "lose";
            } // else
        } // if
        return result;
    } // battle 

main 메서드 안에서 모든 코드를 처리하지않고
승, 패, 무 를 따로 계산해주는 battle 이란 메서드를 하나 더 생성 해주었습니다~

String result = battle(userChoice, randomNum);

위 코드가 실행되는 line 에 battle() 의 코드를 그대로 붙여도 결과에는 상관 없습니다.

쉬운 코드라 설명은 따로 안해도 될듯 합니다..?!!

profile
코알못극복까지

0개의 댓글