가위 바위 보 프로그램



import java.util.Random;
import java.util.Scanner;
/* 가위 바위 보 프로그램 */

/* 도구 모음 클래스 */
class Tools {
	String[] options = { "가위", "바위", "보" }; // 가위 바위 보 문자열 저장한 배열
	Scanner sc = new Scanner(System.in); // 스캐너 도구 생성
	Random rd = new Random(); // 난수 도구 생성

	// 사용자로 부터 입력을 요구하는 함수
	String input() {
		return sc.next();
	}

	// 컴퓨터와 사용자의 가위 바위 보 결과를 출력하는 함수
	void printResult(String c, String u) {
		System.out.println("컴퓨터: " + c);
		System.out.println("나: " + u);
	}

	// 컴퓨터와 사용자의 승패를 확인하고 출력하는 함수
	void compare(String c, String u) { // 컴퓨터와 유저의 가위 바위 보 값 받아오기
		if (c.equals(u)) { // 승부수가 같은지 먼저 확인
			System.out.println("비김"); 
		} else if ( // 유저가 이기는 경우 3가지 확인
				(u.equals(options[0]) && c.equals(options[2])) || // 유저=가위 그리고 컴퓨터=보
				(u.equals(options[1]) && c.equals(options[0])) || // 유저=바위 그리고 컴퓨터=가위
				(u.equals(options[2]) && c.equals(options[1]))    // 유저=보   그리고 컴퓨터=바위
				) {
			System.out.println("너가 이김");
		} else { // 비긴것도 아니고 유저가 이긴 것도 아닌 경우는? 유저의 패배
			System.out.println("너가 짐");
		}
	}
}

public class Cmd {
	public static void main(String[] args) {

		Tools t = new Tools(); // 도구 모음 객체 생성

		while (true) {
			/* 0, 1, 2 난수 뽑기 */
			int index = t.rd.nextInt(3);
			// Tools 객체의 Random 객체의 nextInt() 함수 호출, index 변수에 그 반환값 저장
			// nextInt() 함수는 랜덤 숫자를 반환 nextInt(3) - > 0에서 2까지의 세 숫자를 반환

			/* 컴퓨터의 승부수 */
			String computerOption = t.options[index];
			// Tools 객체의 가위 바위 보 배열의 0, 1, 또는 2번째 값을 computerOption 변수에 저장

			/* 유저의 승부수 */
			System.out.println(t.options[0] + ", " + t.options[1] + ", " + t.options[2] + "를 입력: ");
			// Tools 객체의 가위 바위 보 배열을 가져와서 출력
			String userOption = t.input();
			// Tools 객체의 input 함수로 유저의 입력값을 반환 받고, userOption 변수에 저장

			/* 서로의 승부수 확인 */
			t.printResult(computerOption, userOption);
			// Tools 객체의 승부수 출력 함수 호출
			// 출력하기 위해 computerOption 과 userOption 두 변수를 파라미터로 보낸다.

			/* 승패 확인 */
			t.compare(computerOption, userOption);
			// Tools 객체의 compare 함수로 승패를 확인하고 출력
			// 비교하기 위해 computerOption 과 userOption 두 변수를 파라미터로 보낸다.

			/* 반복 확인 */
			System.out.println("다시 ㄱ?");

			String input = t.input();
			// Tools 객체의 input 함수로 사용자 입력 반환

			if (input.equals("ㄱ")) {
				continue; // ㄱ면 다시
			} else {
				break; // ㄱ가 아니면 종료
			}
		}
	}
}

댓글

이 블로그의 인기 게시물

substring 예제: 문자열을 입력 받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라

배열, 리스트, 해쉬셋 연습 : 1 부터 45 까지 중복하지 않는 숫자 6개 생성하는 프로그램

다형성 추가정리, instanceof