[Java] 가위바위보 게임

Minji Kim·2021년 7월 23일
0

Java

목록 보기
1/9
post-thumbnail

가위바위보 게임 프로그램

프로그램 설명

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!");
	}
}

실행 결과

profile
블로그 이전 mimah.tistory.com

0개의 댓글