ねじ石切り布

4578 ワード

/*
  • あなたのコンピュータとじゃんけんをするプログラムを作成

  • コンピュータの中のハサミの石の布は数字を使って値を求めます(数字が数字なため)
  • ユーザのはさみ石布はshowInputDialog()メソッドで入力する.(はさみ石布入力を受ける)

  • 入力時間を5秒に制限し、カウントダウンを行います.
  • 5秒以内に入力がなく、ゲームに負けて終了したとしても

  • 5秒以内に、入力があれば勝ちを求めて出力します.

  • サンプル結果)
  • 1)入力は5秒以内に完了
  • --結果--
  • コンピュータ:はさみ
  • ユーザー:岩石
  • 結果:あなたが勝った.

  • 2)5秒以内入力失敗
  • --結果--
  • あなたはタイムアウトで負けました.

  • */
  • package kr.or.didt.basic;
    
    import java.util.HashMap;
    
    import javax.swing.JOptionPane;
    
    
    
    public class ThreadTest09 {
    	
    	public static void main(String[] args) {
    
    		Thread th1 = new Input();
            Thread th2 = new Count();
            
            th1.start();
            th2.start();
    	}
    	
    }
    
    	class Input extends Thread{	
    		//사용자로부터 데이터 입력 받기
    		//public static boolean inputCheck = false;
    		HashMap<Integer, String> Map = new HashMap<>();
    		
    		
    		public void run(){
    			//컴퓨터의 랜덤값 넣기
    			Map.put(1,"가위");
    			Map.put(2, "바위");
    			Map.put(3, "보");
    			int random = (int)(Math.random()*3+1);
    			String ran = Map.get(random);
    			
    	    String str = JOptionPane.showInputDialog("가위 바위 보를 입력하세요");
    	    Count.inputCheck = true; 
    	    
    	    
    	    String result = "";
    	    if(ran.equals(str)){
    	    	result = "비겼습니다.";
    	    }else if((str.equals("가위") && ran.equals("보")) || 
    	    		(str.equals("바위") && ran.equals("가위")) || 
    	    		(str.equals("보") && ran.equals("바위"))){
    	    	//다 사용자가 이기는 경우
    	    	result = "당신이 이겼습니다.";
    	    }else{
    	    	result = "당신이 졌습니다.";
    	    	 System.exit(0);
    	    }
    		//입력하면 입력한 값 출력, 취소하면 null값 출력
    	    
    	  //결과 출력
    	    System.out.println("결과 출력");
    	    System.out.println("컴퓨터 : " + ran);
    	    System.out.println("사용자 : "+ str);
    	    System.out.println("결과 : "+ result);
    	}
    }
    	
    	    //1) 5초안에 입력이 완료되었을 때 
    	    class Count extends Thread{
    	    	public static boolean inputCheck ;
    	    	
    	    	@Override
    	    	public void run() {
    	    		System.out.println("카운트 시작");
    	    		
    	    		for(int i=5; i>0; i--){
    	    			if(inputCheck == true){
    	    				return;
    	    			}
    	    			System.out.println(i);
    	    			try {
    	    				Thread.sleep(1000);
    	    			} catch (InterruptedException e) {
    	    				// TODO: handle exception
    	    			}
    	    		}
    	    		System.out.println("결과");
    	    		System.out.println("시간초과로 당신이 졌습니다.");
    	    		System.exit(0);
    	    }
    	    } 
    	    
    
    
    先生が作りました.
    package kr.or.didt.basic;
    
    import javax.swing.JOptionPane;
    
    public class gametime {
    
    	public static void main(String[] args) {
         GameTimer gt = new GameTimer();
    	
         //난수를 이용해서 컴퓨터의 가위 바위 보 정기하
        String[] data = {"가위","바위","보"};  
        //index ==> 0~2사이의 값을 가지고 빼내올 수 있음
        int index = (int)(Math.random()*3);//0~2사이의 난수를 만듬
        String com = data[index];
        
        //사용자의 가위 바위 보 입력 받기
        gt.start();//카운트 다운 시작
        String man = JOptionPane.showInputDialog("가위바위보를 입력하세요");
        GameTimer.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.exit(0);
        }
    		
        //결과 출력
        System.out.println("결과 출력");
        System.out.println("컴퓨터 : " + com);
        System.out.println("사용자 : "+ man);
        System.out.println("결과 : "+ result);
        
        
    	}
    
    }
    
    //카운트 다운 스레드
    class GameTimer extends Thread{
    	public static boolean inputCheck = false;
    	
    	@Override
    	public void run() {
    		System.out.println("카운트 시작");
    		
    		for(int i=5; i>0; i++){
    			if(inputCheck == true){
    				return;
    			}
    			System.out.println(i);
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {
    				// TODO: handle exception
    			}
    		}
    		System.out.println("결과");
    		System.out.println("시간초과로 당신이 졌습니다.");
    	}
    	
    }