[Java] 보너스 문제: 가위 바위 보

Yuri·2024년 12월 12일

Java

목록 보기
8/13

🍀 본격적으로 시작해 볼까요?

문제

5번의 가위바위보 게임을 해서 승리한 횟수 상당의 상품을 받아가는 게임을 만들어봐요

  1. 5번의 가위바위보를 진행합니다.
  2. 유저는 매 판마다 “가위”, “바위”, “보” 중 하나를 입력합니다.
    • 잘못된 입력을 받았다면 잘못된 입력입니다! 를 출력해주세요.
  3. 컴퓨터는 “가위”, “바위”, “보” 중 랜덤하게 하나를 낼 수 있습니다.
  4. 매판마다 진행한 가위 바위 보의 승패에 대한 결과를 출력됩니다.
  5. 5판을 모두 마치면 승리한 횟수에 걸맞는 경품을 획득할 수 있습니다.
Map<Integer, String> gifts = new HashMap<>();
gifts.put(0, "꽝");
gifts.put(1, "곰돌이 인형");
gifts.put(2, "스파르타 랜드 입장권");
gifts.put(3, "스파르타 캐니언 항공 투어권");
gifts.put(4, "호텔 스파르타 숙박권");
gifts.put(5, "스파르테이트 항공권");

import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

public class RockPaperScissors {

    private static int resultOfGame(String user, String computer) {
        int result = 0;
        String[] comments = {
                "서로 비겼습니다.",
                "당신이 이겼습니다!",
                "당신이 졌습니다.."
        };
        switch (user) {
            case "가위":
                switch (computer) {
                    case "바위" -> result = 2;
                    case "보" -> result = 1;
                }
                break;
            case "바위":
                switch (computer) {
                    case "가위" -> result = 1;
                    case "보" -> result = 2;
                }
                break;
            case "보":
                switch (computer) {
                    case "가위" -> result = 2;
                    case "바위" -> result = 1;
                }
                break;
        }
        System.out.println("당신의 " + user + " 그리고 상대는 " + computer + " 으로 " + comments[result]);
        return result == 1 ? 1 : 0;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        Map<Integer, String> gifts = Map.of(
                0, "꽝",
                1, "곰돌이 인형",
                2, "스파르타 랜드 입장권",
                3, "스파르타 캐니언 항공 투어권",
                4, "호텔 스파르타 숙박권",
                5, "스파르테이트 항공권"
        );
        List<String> select = List.of("가위", "바위", "보");
        int numOfWins = 0;

        int count = 5;
        while (count > 0) {
            rand.setSeed(System.currentTimeMillis());
            System.out.println("가위, 바위, 보 중 하나를 입력해주세요!");
            String user = sc.nextLine().trim();
            if (!select.contains(user)) {
                System.out.println("잘못된 입력입니다.");
                continue;
            }
            String computer = select.get(rand.nextInt(select.size()));
            numOfWins += resultOfGame(user, computer);
            count--;
        }
        System.out.println("축하합니다! 총" + numOfWins + "회 승리하여 경품으로 [" + gifts.get(numOfWins) + "] 을 획득하였습니다.");
    }
}

결과

profile
안녕하세요 :)

0개의 댓글