본문 바로가기
전공 수업/객체 지향 프로그래밍(Java)

[7주 차] - Math.random() 메서드, 제어문(반복문, 조건문)을 사용한 코드 예제

by TwoJun 2022. 10. 12.

    과목명 : 객체지향 프로그래밍(Object oriented programming)

수업일자 : 2022년 10월 12일 (수)

 

 

 

1. 사용자와 컴퓨터가 가위, 바위, 보 게임 진행하기

1-1. 개요

- 이번 7 주차 수업에서는 사용자와 컴퓨터가 가위, 바위, 보 게임을 진행하는 프로그램을 작성하였습니다.

 

- 게임이 종료되면 아래와 같은 3개의 지표를 출력하게 됩니다.

(1) 진행한 게임 횟수

(2) 이긴 횟수 (사용자가 컴퓨터를 이긴 횟수)

(3) 승률 (컴퓨터를 이긴 사용자에 대한 승률)

 

 

 

 

1-2. 소스 코드

* 소스 코드의 가독성을 위해 주석을 최대한 활용하였습니다.

// 사용자 입력을 받기 위한 Scanner 클래스 불러오기
import java.util.Scanner;

public class RpsGame {
    public static void main(String[] args) {

        // 사용자가 입력할 가위, 바위, 보
        Scanner userInput = new Scanner(System.in);

        // 전체 게임수
        int gameNumbers = 0;

        // 사용자가 이긴 횟수
        int userWinCount = 0;

        // 사용자의 가위, 바위 보
        int rpsNumber;

        // 10번 게임 진행
        while (true) {
            System.out.printf("========================================%n");
            System.out.printf("가위(0), 바위(1), 보(2)를 입력하세요.%n");
            System.out.printf("3 이상의 수를 입력할 경우 게임이 종료됩니다.%n");

            // 사용자로부터 값을 입력받는다.
            System.out.printf("값을 입력하세요 : ");
            
            // 입력받은 값은 정수형 데이터로 변환된다.
            rpsNumber = userInput.nextInt();

            // 게임을 진행할 때마다 전체 게임수 증가
            gameNumbers++;

                // 만약 입력한 값이 3 이상이라면 루프를 탈출, 승률과 총 게임 횟수, 이긴 횟수를 출력한다.
                // 3 이상 입력된 경우엔 게임수에 해당되지 않으므로 총 게임 수를 1 감소시킨다.
                if (rpsNumber >= 3) {

                    // 3 이상의 경우 gameNumbers 1 감소
                    gameNumbers--;

                    System.out.println("3 이상의 수를 입력하여 게임이 종료됩니다.");
                    System.out.printf("총 게임 횟수 : %d, 이긴 횟수 : %d%n", gameNumbers, userWinCount);
                    System.out.printf("승률 : %.1f%%", ((float) userWinCount / gameNumbers * 100));
                    break;
                }

            // 컴퓨터가 낼 가위, 바위 보
            int computerVariable = (int) (Math.random() * 3);

            System.out.printf("사용자가 입력한 값 : %d%n", rpsNumber);
            System.out.printf("컴퓨터가 입력한 값 : %d%n", computerVariable);

            // 승, 패 판정을 결정하는 로직
            /* 승, 패 판정을 위한 변수 whoWin이 양수이면 컴퓨터 승리, 음수면 사람의 승리, 
            그 외의 경우 0이 되며 0은 무승부 판정 */
            int whoWin = computerVariable - rpsNumber;

            if (whoWin == 2 || whoWin == 1) { System.out.printf("컴퓨터 Win%n");}

            else if (whoWin == -2 || whoWin == -1 ) {
                System.out.printf("사람 Win%n");

                // 이길 때마다 사용자가 이긴 횟수 카운트 1씩 증가
                userWinCount++;
            }
            else if (whoWin == 0) { System.out.printf("비겼습니다%n");}
            else { System.out.printf("3 이상의 수가 입력되어 게임이 종료됩니다."); }
            }
        }
    }

 

 

 

1-3. 실행 결과

- 프로그램을 실행하여 총 10 게임을 진행한 결과입니다.

프로그램 실행 결과(1)
프로그램 실행 결과(2)
프로그램 실행 결과(3)

 

 

 

 

- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.

- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.

댓글