반응형
가위바위보 게임
프로그램 설명
Java 언어를 복습하며 메소드 활용을 최대한으로 하는 가위바위보 게임을 만들었다.
가위(1), 바위(2), 보(3) 세 가지를 비교할 때 논리 연산자를 사용하여 일일이 비교하면 코드의 길이가 너무 길어진다. 따라서 com != (user % 3) + 1 이라는 조건식을 사용하였다.
가위 (1) 는 바위 (2) 에게 진다.
바위 (2) 는 보 (3) 에게 진다.
보 (3) 는 가위 (1) 에게 진다.
이때 왼쪽을 사용자(user), 오른쪽을 컴퓨터(com)라고 가정하자.
예시로 든 가위바위보는 1 ~ 3 까지의 숫자로 이루어져 있어서 사용자가 낸 결과 % 3 연산을 하였다.
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
연산으로 나온 결과는 컴퓨터가 낸 결과 - 1 값과 동일하다.
즉 com - 1 == user % 3 인 경우 사용자가 지는 것이다.
이 조건을 정리한 것이 위의 com != (user % 3) + 1 이다.
소스 코드
import java.util.Scanner;
public class RockScissorPaper {
public static void main(String[] args) {
System.out.println("가위 바위 보 게임");
Scanner sc = new Scanner(System.in);
while (true) {
showMenu(); // 메뉴 출력
int user = inputChoice(sc); // 사용자 입력
if (user == 0) // 0 이면 게임 종료
break;
int com = (int) Math.floor(Math.random() * 3) + 1;
displayChoice(user, com); // 양측의 선택 출력
computeResult(user, com); // 승부 결과 출력
}
sc.close();
}
public static void showMenu() {
System.out.println("----------------");
System.out.println("[1] 가위");
System.out.println("[2] 바위");
System.out.println("[3] 보");
System.out.println("[0] 종료");
System.out.println("----------------");
}
public static int inputChoice(Scanner sc) {
int choice = 0;
System.out.print("선택 : ");
choice = sc.nextInt();
while (choice < 0 || choice > 3) {
System.out.println("다시 입력해주세요\n선택");
choice = sc.nextInt();
System.out.print("선택 : ");
}
return choice;
}
public static void displayChoice(int user, int com) {
String userCho = getHandType(user);
String comCho = getHandType(com);
System.out.println("사용자 vs 컴퓨터");
System.out.println(userCho + " vs " + comCho);
}
public static String getHandType(int choice) {
if (choice == 1)
return "가위";
else if (choice == 2)
return "바위";
else
return "보";
}
public static void computeResult(int user, int com) {
if (user == com)
System.out.println("비겼습니다.");
else if (com != (user % 3) + 1)
System.out.println("User Win!");
else
System.out.println("Com Win!");
}
}
실행 결과
반응형