nameless1004 2024. 7. 1. 16:58

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

조건은 이러하다.

  1. 5번의 가위바위보를 진행한다.
  2. 유저는 매 판마다 "가위", "바위", "보" 중 하나를 입력한다.
    1. 잘못된 입력을 받았다면 잘못된 입력입니다! 를 출력해 준다.
  3. 컴퓨터는 가위, 바위, 보 중 랜덤 하게 하나를 낼 수 있다.
  4. 매판마다 진행한 가위 바위 보의 승패에 대한 결과를 출력한다.
  5. 5판을 모두 마치면 승리한 횟수에 걸맞은 경품을 획득할 수 있다.

문제를 딱 보고 리스트나 Map을 사용하면 쉽게 만들 수 있을 것 같았다.

구현

import java.text.MessageFormat;
import java.util.*;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
    public static void main(String[] args) {
        String[] list = {"가위", "바위", "보"};
        int[] wincase = {1, 2, 0};
        int[] draw = {0, 1, 2};
        Map<Integer, String> stoi = new HashMap<>();
        stoi.put(0, "가위");
        stoi.put(1, "바위");
        stoi.put(2, "보");

        Map<Integer, String> gifts = new HashMap<>();
        gifts.put(0, "꽝");
        gifts.put(1, "곰돌이 인형");
        gifts.put(2, "스파르타 랜드 입장권");
        gifts.put(3, "ㅅ파르타 캐니언 항공 투어권");
        gifts.put(4, "호텔 스파르타 숙박권");
        gifts.put(5, "스파르테이트 항공권");

        Random random = new Random();

        int count = 5;
        int winCount = 0;
        while (count > 0) {
            System.out.println("가위 바위 보 중 하나를 입력해주세요!");
            var scanner = new Scanner(System.in);
            var input = -1;
            while (true) {
                var str = scanner.next();
                if (!Arrays.asList(list).contains(str)) {
                    System.out.println("잘못된 입력입니다.");
                } else {
                    input = Arrays.asList(list).indexOf(str);
                    break;
                }
            }

            int rand = random.nextInt(0, 3);
            if(wincase[rand] == input){
                winCount++;
                System.out.println(MessageFormat.format("당신은 {0} 그리고 상대는 {1}로 당신이 이겼습니다.", stoi.get(input), stoi.get(rand)));
            }
            else if(draw[rand] == input){
                System.out.println(MessageFormat.format("당신은 {0} 그리고 상대는 {1}로 서로 비겼습니다.", stoi.get(input), stoi.get(rand)));
            }
            else{
                System.out.println(MessageFormat.format("당신은 {0} 그리고 상대는 {1}로 당신이 졌습니다.", stoi.get(input), stoi.get(rand)));
            }
            // win lose check
            count--;
        }
        System.out.println(MessageFormat.format("축하합니다! 총 {0}회 승리하여 경품으로 [{1}]을 획득하셨습니다.", winCount, gifts.get(winCount)));
    }
}

결과