반응형
/*
컴퓨터와 가위 바위 보를 진행하는 프로그램
컴퓨터의 가위 바위 보는 난수를 이용해서 구하고
사용자의 가위 바위 보는 showInputDialog()메서드를 이용해서 입력 받는다.
입력시간은 5초로 제한하고 카운트 다운을 진행한다.
5초 안에 입력이 없으면 게임에 진것으로 처리한다.
5초 안에 입력에 완료되면 승패를 구해서 결과를 출력한다.
결과 예시)
1) 5초 안에 입력을 못했을 경우
- 결 과 -
시간 초과로 당신이 졌습니다...
-----------------------------------------
2) 5초 안에 입력되었을 경우
- 결 과 -
컴퓨터 : 가위
사용자 : 바위
결 과 : 당신이 이겼습니다...
*/
public class 가위바위보 {
public static boolean inputCheck = false;
public static void main(String[] args) {
GameTimer gt = new GameTimer();
// 난수를 이용해서 컴퓨터의 가위 바위 보 정하기
Random rnd = new Random();
String[] data = {"가위", "바위", "보"};
int index = rnd.nextInt(data.length); // 0~2 사이의 난수 만들기
String com = data[index]; // 배열에서 난수번째 데이터를 컴퓨터의 가위 바위 보로 정한다.
// 사용자의 가위 바위 보 입력 받기
gt.start(); // 카운트 다운 시작...
String user = null;
do {
user = JOptionPane.showInputDialog("가위 바위 보를 입력하세요");
// }while( !("가위".equals(user) || "바위".equals(user) || "보".equals(user)) );
}while( !"가위".equals(user) && !"바위".equals(user) && !"보".equals(user) );
inputCheck = true;
// 승패 판정하기
String result = ""; // 승패가 저장될 변수
if(com.equals(user)) {
result = "비겼습니다...";
}else if( user.equals("가위") && com.equals("보") ||
user.equals("바위") && com.equals("가위") ||
user.equals("보") && com.equals("바위")) {
result = "당신이 이겼습니다...";
}else {
result = "당신이 졌습니다...";
}
// 결과 출력하기
System.out.println(" - 결 과 -");
System.out.println("컴퓨터 : " + com);
System.out.println("사용자 : " + user);
System.out.println("결 과 : " + result);
}
}
// 카운트 하기 5초
class GameTimer extends Thread{ // Thread를 상속받는 GameTimer 클래스
@Override
public void run() { // run() 메서드를 생성
System.out.println("카운트 다운 시작...");
for(int i=5; i>=1; i--) { // 5~1까지 i가 차례로 적어지며
if(가위바위보.inputCheck == true) { // 입력 받았는지 확인하고, 받았으면
return; // 카운트다운 끝내기! < return : 메서드 끝내기 >
}
System.out.println(i); // 5~1 차례로 인쇄
try { // try-catch문으로
Thread.sleep(1000); // 1초마다 딜레이 시키기
} catch (InterruptedException e) {
// TODO: handle exception
}
}
System.out.println(); // 줄바꾸고 결과 인쇄
System.out.println(" - 결 과 -");
System.out.println("시간 초과로 당신이 졌습니다...");
System.exit(0);
} // run() 메서드 끝!
}
반응형
'내가 보려고 정리하는 > JAVA' 카테고리의 다른 글
쓰레드로 은행의 입출금 처리하기! (동기화 처리 예제) (0) | 2022.12.28 |
---|---|
쓰레드 동기화 (2) | 2022.12.28 |
처음 보는 것들... + 조금씩 추가될 예정...! (0) | 2022.12.27 |
로또를 뽑아보자! (0) | 2022.12.20 |
아니, 인터페이스는 <Set>도 있잖아! (0) | 2022.12.20 |