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