import javax.swing.JOptionPane;
/*
컴퓨터와 가위 바위 보를 진행하는 프로그램을 작성하시오.
컴퓨터의 가위 바위 보는 난수를 이용하여 구하고
사용자의 가위 바위 보는 showInputDialog()메서드를 이용하여 입력받는다.
입력시간은 5초로 제한하고 카운트 다운을 진행한다.
5초안에 입력이 없으면 게임을 진것으로 처리한다.
5초안에 입력이 완료되면 승패를 출력한다.
결과예시)
=== 결 과 ===
컴퓨터 : 가위
당 신 : 바위
결 과 : 당신이 이겼습니다.
*/
public class S04ThreadGame {
//상수 지정
public static boolean INPUT_CHK = false;
public static String man = "";
public static void main(String[] args) {
String[] data = {"가위", "바위", "보"};
int nan = (int)(Math.random()*3); //0,1,2 난수
String com = data[nan]; //컴퓨터가 랜덤으로 낼 가위바위보
// 스레드 스타트
Thread th1 = new gameCount();
Thread th2 = new UserInput();
th1.start();
th2.start();
//조인
try {
th2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//결과값
String result = "";
if(man.equals(com)) {
result = "비겼습니다.";
}else if((man.equals("가위") && com.equals("바위"))
|| (man.equals("바위") && com.equals("보"))
|| (man.equals("보") && com.equals("가위"))) {
result = "당신이 졌습니다.";
}else{
result = "당신이 이겼습니다.";
}
System.out.println("=== 결 과 ===");
System.out.println("컴퓨터 : " + com);
System.out.println("당 신 : " + man);
System.out.println("결 과 : " + result);
}
}
class gameCount extends Thread {
@Override
public void run() {
for(int i = 5; i>=1; i--) { // 사용자가 시간내에 입력완료했을시
// 카운트다운 스레드는 종료
if(S04ThreadGame.INPUT_CHK == true) {
return;
}System.out.println("남은시간: " + i + "초");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("시간이 초과되어 당신이 졌습니다.");
System.exit(0);
}
}
class UserInput extends Thread {
@Override
public void run() {
String user = "";
do {user = JOptionPane.showInputDialog("가위 바위 보 중 하나 입력");
}while((!user.equals("가위")) && (!user.equals("바위"))
&& (!user.equals("보")));
//입력받은걸 스트링 상수에 넣기
S04ThreadGame.INPUT_CHK = true; //입력 완료하면 true로
S04ThreadGame.man = user; //user가 입력한 값 저장
}
}
'중급과정 > HighJava' 카테고리의 다른 글
[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections) (0) | 2023.11.30 |
---|---|
[Java] 학생 리스트 정렬 (List, Comparable, Comparator) (0) | 2023.11.30 |
[Java] Thread(스레드)를 이용한 알파벳 대문자 출력과 출력순대로 순위 매기는 프로그램 작성예제 (0) | 2023.11.29 |
[Java] 2일차 HashSet, TreeSet, equals, hashCode (1) | 2023.11.23 |
[Java] 231121_1일차 ArrayList, LinkedList (0) | 2023.11.22 |
import javax.swing.JOptionPane;
/*
컴퓨터와 가위 바위 보를 진행하는 프로그램을 작성하시오.
컴퓨터의 가위 바위 보는 난수를 이용하여 구하고
사용자의 가위 바위 보는 showInputDialog()메서드를 이용하여 입력받는다.
입력시간은 5초로 제한하고 카운트 다운을 진행한다.
5초안에 입력이 없으면 게임을 진것으로 처리한다.
5초안에 입력이 완료되면 승패를 출력한다.
결과예시)
=== 결 과 ===
컴퓨터 : 가위
당 신 : 바위
결 과 : 당신이 이겼습니다.
*/
public class S04ThreadGame {
//상수 지정
public static boolean INPUT_CHK = false;
public static String man = "";
public static void main(String[] args) {
String[] data = {"가위", "바위", "보"};
int nan = (int)(Math.random()*3); //0,1,2 난수
String com = data[nan]; //컴퓨터가 랜덤으로 낼 가위바위보
// 스레드 스타트
Thread th1 = new gameCount();
Thread th2 = new UserInput();
th1.start();
th2.start();
//조인
try {
th2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
//결과값
String result = "";
if(man.equals(com)) {
result = "비겼습니다.";
}else if((man.equals("가위") && com.equals("바위"))
|| (man.equals("바위") && com.equals("보"))
|| (man.equals("보") && com.equals("가위"))) {
result = "당신이 졌습니다.";
}else{
result = "당신이 이겼습니다.";
}
System.out.println("=== 결 과 ===");
System.out.println("컴퓨터 : " + com);
System.out.println("당 신 : " + man);
System.out.println("결 과 : " + result);
}
}
class gameCount extends Thread {
@Override
public void run() {
for(int i = 5; i>=1; i--) { // 사용자가 시간내에 입력완료했을시
// 카운트다운 스레드는 종료
if(S04ThreadGame.INPUT_CHK == true) {
return;
}System.out.println("남은시간: " + i + "초");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("시간이 초과되어 당신이 졌습니다.");
System.exit(0);
}
}
class UserInput extends Thread {
@Override
public void run() {
String user = "";
do {user = JOptionPane.showInputDialog("가위 바위 보 중 하나 입력");
}while((!user.equals("가위")) && (!user.equals("바위"))
&& (!user.equals("보")));
//입력받은걸 스트링 상수에 넣기
S04ThreadGame.INPUT_CHK = true; //입력 완료하면 true로
S04ThreadGame.man = user; //user가 입력한 값 저장
}
}
'중급과정 > HighJava' 카테고리의 다른 글
[Java] 로또 구매 프로그램 예제 (ArrayList, HashSet, Collections) (0) | 2023.11.30 |
---|---|
[Java] 학생 리스트 정렬 (List, Comparable, Comparator) (0) | 2023.11.30 |
[Java] Thread(스레드)를 이용한 알파벳 대문자 출력과 출력순대로 순위 매기는 프로그램 작성예제 (0) | 2023.11.29 |
[Java] 2일차 HashSet, TreeSet, equals, hashCode (1) | 2023.11.23 |
[Java] 231121_1일차 ArrayList, LinkedList (0) | 2023.11.22 |