코딩테스트/Java

[Java]가위 바위 보 게임

코딩로봇 2025. 2. 11. 17:23

문제

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

1. 5번의 가위바위보를 진행합니다.

2. 유저는 매 판마다 “가위”, “바위”, “보” 중 하나를 입력합니다. 잘못된 입력을 받았다면 잘못된 입력입니다! 를 출력해주세요. 

3. 컴퓨터는 가위 , 바위, 보 중 랜덤하게 하나를 낼 수 있습니다.

4. 매판마다 진행한 가위 바위 보의 승패에 대한 결과를 출력됩니다.

5. 5판을 모두 마치면 승리한 횟수에 걸맞는 경품을 획득할 수 있습니다.

 

 

실행예시

 

 

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

public class Main {
	private String[] rcp = {"가위","바위","보"};
	public String Randompick() {
		//랜덤 객체 생성
		Random random =new Random();
		
		//rcp에 있는 배열 인덱스를 랜덤으로 선정
		String computerPick = rcp[random.nextInt(rcp.length)];
		return computerPick;
	}
	public static void main(String[] args) {
		
		Main randompickeditor = new Main();
		int chance = 5;
		int win = 0;
		
		//리스트 메소니 contain을 이용해 해당값 유무확인을 위한 배열->리스트 전환
		List<String>rcpList = Arrays.asList(randompickeditor.rcp);
		
		//Map 함수를 통해 <키,값> 선정
		Map<Integer,String> gifts =new HashMap<Integer,String>();
		gifts.put(0, "꽝");
		gifts.put(1, "곰돌이 인형");
		gifts.put(2, "스파르타 랜드 입장권");
		gifts.put(3, "스파르타 캐니언 항공 투어권");
		gifts.put(4, "호텔 스파르타 숙박권");
		gifts.put(5, "스파르테이트 항공권");
		
		Scanner sc=new Scanner(System.in);
		while(chance>0) {
			System.out.println("가위 바위 보 중 하나를 입력해주세요!");
			String userChoice = sc.nextLine();    
			String compick = randompickeditor.Randompick();
			
			//리스트에 해당하는 값을 입력했는지 확인
			if(!rcpList.contains(userChoice))
			{
				System.out.println("잘못된 입력입니다.");
				continue;
			}
			
			//가위바위보 알고리즘
			if(userChoice.equals("가위")) {
				if(compick.equals("바위"))
				{
					System.out.println("당신은 가위 상대는 바위로 졌습니다.");
				}
				else if(compick.equals("보"))
				{
					System.out.println("당신은 가위 상대는 보로 이겼습니다.");
					win++;
				}
				else {
					System.out.println("당신은 가위 상대도 가위로 비겼습니다.");
				}	
			}
			
			if(userChoice.equals("바위")) {
				if(compick.equals("가위"))
				{
					System.out.println("당신은 바위 상대는 가위로 이습니다.");
					win++;
				}
				else if(compick.equals("보"))
				{
					System.out.println("당신은 바위 상대는 보로 졌습니다.");
				}
				else {
					System.out.println("당신은 바위 상대도 보로 비겼습니다.");
				}	
			}
			
			if(userChoice.equals("보")) {
				if(compick.equals("바위"))
				{
					System.out.println("당신은 보 상대는 바위로 이겼습니다.");
					win++;
				}
				else if(compick.equals("가위"))
				{
					System.out.println("당신은 보 상대는 가위로 졌습니다.");
				}
				else {
					System.out.println("당신은 보 상대도 보로 비겼습니다.");
				}	
			}
			
			//기회 차감
			chance--;
			
			//기회가 다 소모되면 승리별로 상품확인
			if(chance==0) {
			System.out.println("축하합니다. 총 "+ win +" 회 승리하여 경품으로"+gifts.get(win)+"을 획득하셨습니다.!");
			}
		}
		
			}
}

 

 

✒️ 회고

- 단순하게 if문을 사용하여 코딩하였기 때문에 생각보다 코드가 길다고 생각했다. 나중엔 가위바위보 알고리즘에 대해 공부하여 간단하게 만들어보고 싶다.

- 배열을 List로 변형하여 주요 메소드들을 사용할 수 있는 방법이 자주 사용될 거 같다. 이 부분은 더 실습을 통해 숙지 해야겠다.