컴퓨터와 가위바위보를 하는 게임입니다. 컴퓨터는 난수를 이용해 낼 패를 결정합니다. 가위바위보 스트링을 만드는 부분이 번거롭기 때문에 gbbStr 이라는 별도의 메소드로 분리해 해당 작업을 처리하도록 히겠습니다. 이 예제는 자바 계산기의 내용과 이어집니다.

import java.util.Scanner;

public class Random03 {
    public static void main(String[] args) {
        
        while(true){
            System.out.println("===가위 바위 보 ===");
            
            int user;    
            while(true)
            {
                System.out.print("숫자 선택 (1.가위 / 2.바위 / 3. 보) >> ");
                
                Scanner s = new Scanner(System.in);
                user = s.nextInt();
                
                if (user==0)
                {
                    System.out.println("종료합니다.");
                    s.close();
                    System.exit(0);
                }
                else if (user==1 || user==2 || user==3)
                    break;
                else
                    System.out.println("1~3 사이의 값을 입력하세요. 0을 입력하면 종료합니다.\n");
            }
            int ai = (int) Math.random() * (3 - 1 + 1) + 1;
            
            System.out.println();
            System.out.println("=====결과=====");
            
            System.out.println("당신은 " + gbbStr(user) + "를 냈습니다.");        
            System.out.println("컴퓨터는 " + gbbStr(ai) + "를 냈습니다.");        
            System.out.println("============");
            
            if (user==ai)
                System.out.println("비겼습니다.");
            else if (user==1 && ai==2)
                System.out.println("컴퓨터가 이겼습니다.");
            else if (user==1 && ai==3)
                System.out.println("사용자가 이겼습니다.");
            else if (user==2 && ai==1)
                System.out.println("사용자가 이겼습니다.");
            else if (user==2 && ai==3)
                System.out.println("컴퓨터가 이겼습니다.");
            else if (user==3 && ai==1)
                System.out.println("컴퓨터가 이겼습니다.");
            else if (user==2 && ai==1)
                System.out.println("사용자가 이겼습니다.");
            
            System.out.println();
            
        }        
        
    }
    
    public static String gbbStr(int a) {
        
        String gbbStr = "";
        
        // 가위바위보 이모지
        String gawi = new String(Character.toChars(9996));
        String bawi = new String(Character.toChars(9994));
        String bo = new String(Character.toChars(9995));
        
        switch(a) {
        case 1: 
            gbbStr = String.format("가위(%s)", gawi);
            break;
        case 2:
        	gbbStr = String.format("바위(%s)", bawi);
            break;
        case 3:
            gbbStr = String.format("보(%s)", bo);
            break;
        }
        return gbbStr;
        
    }
 
}

Yoonbumtae GIF - Find & Share on GIPHY

 

참고로 예제의 if문은 다음과 같이 줄일 수 있습니다.

if (user==ai)
    System.out.println("비겼습니다.");
else if (user==1 && ai==2)
    System.out.println("컴퓨터가 이겼습니다.");
else if (user==2 && ai==3)
    System.out.println("컴퓨터가 이겼습니다.");
else if (user==3 && ai==1)
    System.out.println("컴퓨터가 이겼습니다.");
else {
	System.out.println("사용자가 이겼습니다.");
}

‘둘 다 비긴것’과 ‘컴퓨터가 이긴 경우’ 외의 경우는 전부 사용자가 이긴 경우일 것이므로 나머지들을 else로 묶어 처리할 수 있습니다.

 


공식 이용하기 (2020년 5월 19일 추가)

가위, 바위, 보를 0, 1, 2에 각각 대입한 후 (x + 2) % 3 한 값이 상대방 편의 값과 같다면 내가(공식을 적용한 쪽) 이긴 것입니다.

if(user == ai) {
	System.out.println("비겼습니다.");
} else if((user + 2) % 3 == ai) {
	System.out.println("사용자(당신)가 이겼습니다.");
} else {
	System.out.println("컴퓨터가 이겼습니다.");
}