JAVA/문제풀이
Thread 연습문제 1 ( 가위바위보 프로그램)
inderrom
2022. 10. 31. 01:10
package kr.or.ddit.basic;
import java.util.Random;
import javax.swing.JOptionPane;
public class ThreadTest07 {
public static boolean inputCheck = false;
/*
컴퓨터와 가위 바위 보를 진행하는 프로그램을 작성하시오.
컴퓨터의 가위 바위 보는 난수를 이용해서 구하고
사용자의 입력은 showInputDialog()메서드를 이용해서 입력 받는다.
입력 시간은 5초로 제한하고 카운트 다운을 진행한다.
5초 안에 입력이 없으면 사용자가 게임에 진것으로 처리하고
5초 안에 입력이 완료되면 컴퓨터와 승패를 구해서 결과를 출력한다.
결과 예시)
1) 5초 안에 입력 없을 때
-- 결과 --
시간 초과로 당신이 졌습니다.
2) 5초 안에 입력이 완료되었을 때
-- 결과 --
컴퓨터 : 가위
사용자 : 바위
결 과 : 당신이 이겼습니다.
*/
public static void main(String[] args) {
GameTimer gt = new GameTimer();
// 난수를 이용해서 컴퓨터의 가위 바위 보 정한다.
String[] data = {"가위","바위","보"};
int index = (int)(Math.random() * (2 - 0 + 1) + 0 ); // 0 ~ 2 사이의 난수 만들기
String com = data[index]; // 컴퓨터의 가위 바위 보 정하기
// 사용자의 가위 바위 보 입력 받기
gt.start();
String man;
do {
man = JOptionPane.showInputDialog("가위 바위 보를 입력하세요");
//}while(!("가위".equals(man) || "바위".equals(man) || "보".equals(man)));
}while(!"가위".equals(man) && !"바위".equals(man) && !"보".equals(man));
inputCheck = true; // 입력 완료 설정
// 결과 판정하기
String result = "";
if(com.equals(man)) {
result = "비겼습니다.";
}else if(man.equals("가위") && com.equals("보")
|| man.equals("바위") && com.equals("가위")
|| man.equals("보") && com.equals("바위")){
result = " 당신이 이겼습니다.";
}else {
result = "당신이 졌습니다.";
}
// 결과 출력하기
System.out.println();
System.out.println("-- 결과 --");
System.out.println("컴퓨터 : " + com);
System.out.println("사용자 : " + man);
System.out.println("결 과 : " + result);
System.out.println();
}
}
class GameTimer extends Thread{
@Override
public void run() {
for(int i =10; i>0; i--) {
//입력이 완료되었는지 여부를 검사해서 입력이 완료되면 쓰레드를 종료시킨다.
if(ThreadTest07.inputCheck==true) {
return; // run()메서드가 종료되면 쓰레드도 종료된다.
}
System.out.println(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
}
}
System.out.println("-- 결과 -- ");
System.out.println("시간 초과로 당신이 졌습니다.");
System.exit(0);
}
}