컴퓨터와 가위바위보를 하는 게임입니다. 컴퓨터는 난수를 이용해 낼 패를 결정합니다. 가위바위보 스트링을 만드는 부분이 번거롭기 때문에 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; } }
참고로 예제의 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("컴퓨터가 이겼습니다."); }
0개의 댓글