본문 바로가기

프로젝트 & TIL/자바 토이 프로젝트

자바 토이 프로젝트 1 - 가위 바위 보 게임

전체 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.println("가위바위보 게임이 시작되었습니다.");

        System.out.println("당신의 이름 또는 닉네임을 입력해주세요.");
        String username = br.readLine();

        int winCount = 0;
        int loseCount = 0;
        int sameCount = 0;

        while(true) {
            System.out.println("\n가위, 바위, 보 중 하나를 입력해주세요. (게임 종료 : X)");
            String user = br.readLine();

            if(user.equals("X")) break;

            int number = (int) (Math.random() * 3);
            String[] rps = new String[]{"가위", "바위", "보"};
            String computer = rps[number];

            if(user.equals(computer)) {
                System.out.println("비겼습니다.");
                sameCount++;
            } else if(user.equals("가위")){
                if(computer.equals("바위")) {
                    System.out.println("졌습니다...");
                    loseCount++;
                } else {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                }
            } else if(user.equals("바위")) {
                if(computer.equals("가위")) {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                } else {
                    System.out.println("졌습니다...");
                    loseCount++;
                }
            } else if(user.equals("보")) {
                if(computer.equals("가위")) {
                    System.out.println("졌습니다...");
                    loseCount++;
                } else {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                }
            } else {
                System.out.println("올바른 단어를 입력해주세요. (게임 종료 : X)");
            }
        }

        System.out.println("============== 최종 결과 ==============");
        System.out.println("[%s] : %d / [컴퓨터] : %d (비긴 횟수 : %d)".formatted(username, winCount, loseCount, sameCount));
        System.out.println("======================================");
        System.out.println("가위바위보 게임이 종료되었습니다.");

        br.close();
    }
}

진행 흐름

1. 게임 이용자의 이름(닉네임)을 입력 받는다.

  

        System.out.println("당신의 이름 또는 닉네임을 입력해주세요.");
        String username = br.readLine();

  

2. 가위, 바위, 보, 또는 X를 입력 받는다.

  

        while(true) {
            System.out.println("\n가위, 바위, 보 중 하나를 입력해주세요. (게임 종료 : X)");
            String user = br.readLine();

  

3. 컴퓨터도 가위, 바위, 보 중 하나를 선택한다.

  

            int number = (int) (Math.random() * 3); // 0, 1, 2 중 하나
            String[] rps = new String[]{"가위", "바위", "보"};
            String computer = rps[number];

  

4-1. 사용자와 컴퓨터의 값을 비교하여 승패를 판별한다.

  

            if(user.equals(computer)) {
                System.out.println("비겼습니다.");
                sameCount++;
            } else if(user.equals("가위")){
                if(computer.equals("바위")) {
                    System.out.println("졌습니다...");
                    loseCount++;
                } else {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                }
            } else if(user.equals("바위")) {
                if(computer.equals("가위")) {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                } else {
                    System.out.println("졌습니다...");
                    loseCount++;
                }
            } else if(user.equals("보")) {
                if(computer.equals("가위")) {
                    System.out.println("졌습니다...");
                    loseCount++;
                } else {
                    System.out.println("이겼습니다!!!");
                    winCount++;
                }
            } else {
                System.out.println("올바른 단어를 입력해주세요. (게임 종료 : X)");
            }

  

4-2. 사용자가 이긴 횟수, 진 횟수, 비긴 횟수를 카운트한다.

  

        int winCount = 0;
        int loseCount = 0;
        int sameCount = 0;

  

5. X를 입력하면 게임이 종료되고, 최종 결과를 보여준다.

  

        while(true) {
        
            ...
            
            if(user.equals("X")) break;
            
            ...
            
        }
            
        System.out.println("============== 최종 결과 ==============");
        System.out.println("[%s] : %d / [컴퓨터] : %d (비긴 횟수 : %d)".formatted(username, winCount, loseCount, sameCount));
        System.out.println("======================================");
        System.out.println("가위바위보 게임이 종료되었습니다.");

  


실행 화면


워낙 단순한 진행 방식이라 구현도 쉽고 간단하게 했다.

게임 종료 후 최종 결과에서 누가 이겼는지, 혹은 사용자의 승패를 확실하게 보여주는 것도 좋을 것 같다.