
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; // ㄱ가 아니면 종료
}
}
}
}
댓글
댓글 쓰기