테스트에 수정까지 하다보니 2시간 가까이 걸렸다...

에초에 계획없이 질문만 보고 생각나는 대로 막 만들었더니 정말 즉흥적이고 흉측한 프로그램이 되버렸네..

 

그리고 왜 내가 회사에서 눈치봐가면서 남의 리포트나 대신해주고 있는건지..

지식인 긴 소스코딩 답변은 이번이 진짜 마지막이다!!

 

 

1. CLASS

 

import java.util.Scanner;

public class test { 
  // 확율 조작..
  static double tem1 = 0.0; // 첫번째 확율.
  static double tem2 = 0.0; // 두번째 확율.
 
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
  
    // int count = 1;
    // 승패 누적.

    int comWin = 0;
    int userWin = 0;
    int draw = 0;

    // int pan=1;
  
    int numL = 0;
    int numR = 0;
  
    int meGet[] = new int[2];
  
    int computerGet = 0;
    int comR = 0; // 컴퓨터가 임의의 확율로 둘중에 하나를 낸다. 
  
    // String p1[] = {"주먹", "가위", "보"};
    String c1 = "";
    String c2 = "";
    String p1 = "";
    String p2 = "";
  
    // while (pan < 4) {
    for(int no = 0;no < 3;no++){ // 3회로 횟수 제한.
      System.out.println((no + 1) + "회차 시작!!");


      // 컴퓨터 왼손
      numL = (int)(Math.random()*3) + 1;

   
      for(int i = 0;i<1;i++){ // 컴퓨터 오른손.
        numR = (int)(Math.random()*3) + 1;
        if(numL == numR){ i--; } // 컴퓨터의 양손의 출력값이 같으면 재시작.
      }


      if(numL == 1){ // 컴퓨터가 낸 왼손 랜덤값을 가의, 바위, 보 로 명명한다.
        c1 = "주먹";
      }else if(numL == 2){
        c1 = "가위";
      }else if(numL == 3){
        c1 = "보";
      }
   
      if(numR == 1){ // 컴퓨터가 낸 오른손 랜덤값을 가의, 바위, 보 로 명명한다.
        c2 = "주먹";
      }else if(numR == 2){
        c2 = "가위";
      }else if(numR == 3){
        c2 = "보";
      }


      // 사람 왼손
      System.out.print("왼손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> ");
      meGet[0] = input.nextInt();

      if(meGet[0] == 1){
        p1 = "주먹";
      }else if(meGet[0] == 2){
        p1 = "가위";
      }else if(meGet[0] == 3){
        p1 = "보";
      }

      System.out.println("왼손은 " + p1 + "을 내셨습니다.");
      
      for(int j = 0;j<1;j++){
        // 사람 오른손
        System.out.print("오른손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> ");
        meGet[1] = input.nextInt();

        if(meGet[0] == meGet[1]){
          System.out.println("ㅂㅅ ㄷㅌㅇ~ 오른손은 다른거 내라고!!");
          j--;
        }
      }
      
      if(meGet[1] == 1){
        p2 = "주먹";
      }else if(meGet[1] == 2){
        p2 = "가위";
      }else if(meGet[1] == 3){
        p2 = "보";
      }
      System.out.println("오른손은 " + p2 + "을 내셨습니다.");
      System.out.println("");

      System.out.println("컴퓨터가 왼손에 낸것은 --> " + c1 + " | 오른손에 낸것은 --> " + c2);
   
      int comSum = numL + numR;
      int meSum = meGet[0] + meGet[1];
   
      if(comSum == meSum){  // 컴퓨터와 당신이 같은 것을 냈을 경우.
        System.out.println("\n컴퓨터와 당신은 양손 모두 같은것을 냈습니다!!");
        draw++;  // 비긴횟수 누적.
      }else{ // 본격적인 게임 시작!!

        System.out.println("\n당신은 " + p1 + " 과 " + p2 + " 중 하나를 내십시오. --> 1)주먹, 2)가위, 3)보 ");

        int comB[] = new int[2];
        comB[0] = numL;
        comB[1] = numR;
    
        boolean uo = false;
        int userOut = 0;
    
        System.out.println(p1 + " 과 " + p2 + " 중에서 내세요!!");
        while(uo != true){  // 사용자가 낸것 중에 선택하게 하는 루프문.
          userOut = input.nextInt();
     
          if(meGet[0] == userOut || meGet[1] == userOut){
            uo = true;
          }else{
            System.out.println("ㄷㅌㅇ!! " + p1 + " 과 " + p2 + " 중에서 내란 말야!!");
          }
        }


        if(comSum == 3){ // 컴퓨터가 주먹과 가위를 냈을 때.


          if(meSum == 4){ // 당신이 주먹과 보를 냈을 때.
            comR = chance4(); // 컴퓨터가 둘중에 하나를 낼 확율.

            if(comR == 1){
              System.out.println("컴퓨터는 주먹을 냈습니다.");
              computerGet = 1;
            }else{
              System.out.println("컴퓨터는 가위을 냈습니다.");
              computerGet = 2;
            }
          }else{ // 당신이 가위와 보를 냈을 때.
            comR = chance0();

            if(comR == 1){
              System.out.println("컴퓨터는 주먹을 냈습니다.");
              computerGet = 1;
            }else{
              System.out.println("컴퓨터는 가위을 냈습니다.");
              computerGet = 2;
            }
          }


        }else if(comSum == 4){ // 컴퓨터가 주먹과 보를 냈을 때.
          if(meSum == 3){ // 당신이 주먹과 가위를 냈을 때.
            System.out.println("컴퓨터는 주먹을 냈습니다.");
            computerGet = 1;
          }else{ // 당신이 가위와 보를 냈을 때.
            comR = chance4();

            if(comR == 1){
              System.out.println("컴퓨터는 주먹을 냈습니다.");
              computerGet = 1;
            }else{
              System.out.println("컴퓨터는 보를 냈습니다.");
              computerGet = 3;
            }
          }
 
        }else if(comSum == 5){ // 컴퓨터가 가위와 보를 냈을 때.
          if(meSum == 3){ // 당신이 주먹과 가위를 냈을 때.
            comR = chance3();

            if(comR == 1){
              System.out.println("컴퓨터는 가위를 냈습니다.");
              computerGet = 2;
            }else{
              System.out.println("컴퓨터는 보를 냈습니다.");
              computerGet = 3;
            }
          }else{ // 당신이 주먹과 보를 냈을 때.
            comR = chance4();

            if(comR == 1){
              System.out.println("컴퓨터는 가위를 냈습니다.");
              computerGet = 2;
            }else{
              System.out.println("컴퓨터는 보를 냈습니다.");
              computerGet = 3;
            }
          }
        }    


        // 승패 결정.

        if(computerGet == 1){
          if(userOut == 1){
            System.out.println("비겼습니다.");
            draw++;
          }else if(userOut == 2){
            System.out.println("당신이 졌습니다.");
            comWin++;
          }else if(userOut == 3){
            System.out.println("당신이 이겼습니다.");
            userWin++;
          } 
        }else if(computerGet == 2){
          if(userOut == 2){
            System.out.println("비겼습니다.");
            draw++;
          }else if(userOut == 3){
            System.out.println("당신이 졌습니다.");
            comWin++;
          }else if(userOut == 1){
            System.out.println("당신이 이겼습니다.");
            userWin++;
          }
        }else if(computerGet == 3){
          if(userOut == 3){
            System.out.println("비겼습니다.");
            draw++;
          }else if(userOut == 1){
            System.out.println("당신이 졌습니다.");
            comWin++;
          }else if(userOut == 2){
            System.out.println("당신이 이겼습니다.");
            userWin++;
          }
        }
      }
      // count++;
      System.out.println(); 
    }
    System.out.println("당신은 " + userWin + "번 이겼습니다.");
    System.out.println("컴퓨터는 " + comWin + "번 이겼습니다.");
    System.out.println("비긴 횟수는 " + draw + " 회 입니다.");
  }


  // 확율 50%로 동일.
  public static int chance0(){
    int comOut = 0;


    while(tem1 == tem2){
      tem1 = (int)(Math.random()*50) + 1;
      tem2 = (int)(Math.random()*50) + 1;
    }
  
    if(tem1 > tem2) comOut = 1;
    else comOut = 2;


    return comOut;
  }
 
  // 앞부분의 확율을 조금 크게 설정할 때.
  public static int chance1(){
    int comOut = 0;
  
    while(tem1 == tem2){
      tem1 = (int)(Math.random()*55) + 1; // 확율 55%.
      tem2 = (int)(Math.random()*45) + 1; // 확율 45%.
    }
  
    if(tem1 > tem2) comOut = 1;
    else comOut = 2;


    return comOut;
  }
 
  // 뒷부분의 확율을 조금 크게 설정할 때.
  public static int chance2(){  
    int comOut = 0;
  
    while(tem1 == tem2){
      tem1 = (int)(Math.random()*45) + 1;
      tem2 = (int)(Math.random()*55) + 1;
    }
  
    if(tem1 > tem2) comOut = 1;
    else comOut = 2;


    return comOut;
 }
 
  // 앞부분의 확율을 크게 설정할 때.
  public static int chance3(){
    int comOut = 0;
  
    while(tem1 == tem2){
      tem1 = (int)(Math.random()*80) + 1; // 확율 80%.
      tem2 = (int)(Math.random()*20) + 1; // 확율 20%.
    }
  
    if(tem1 > tem2) comOut = 1;
    else comOut = 2;


    return comOut;
  }
 
  // 뒷부분의 확율을 크게 설정할 때.
  public static int chance4(){
    int comOut = 0;
  
    while(tem1 == tem2){
      tem1 = (int)(Math.random()*20) + 1; // 확율 20%.
      tem2 = (int)(Math.random()*80) + 1; // 확율 80%.
    }
  
    if(tem1 > tem2) comOut = 1;
    else comOut = 2;


    return comOut;
  }

}

 

 


2. RUN


1회차 시작!!
왼손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 1
왼손은 을 내셨습니다.
오른손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 2
오른손은 가위을 내셨습니다.


컴퓨터가 왼손에 낸것은 --> 가위 | 오른손에 낸것은 --> 주먹


컴퓨터와 당신은 양손 모두 같은것을 냈습니다!!


2회차 시작!!
왼손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 1
왼손은 주먹을 내셨습니다.
오른손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 3
오른손은 보을 내셨습니다.


컴퓨터가 왼손에 낸것은 --> 주먹 | 오른손에 낸것은 --> 가위


당신은 주먹 과 보 중 하나를 내십시오. 1)주먹, 2)가위, 3)보
주먹 과 보 중에서 내세요!!
1
컴퓨터는 가위을 냈습니다.
당신이 이겼습니다.


3회차 시작!!
왼손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 1
왼손은 주먹을 내셨습니다.
오른손에 낼것 번호 선택 :  1)주먹  2)가위  3)보 --> 2
오른손은 가위을 내셨습니다.


컴퓨터가 왼손에 낸것은 --> 보 | 오른손에 낸것은 --> 가위


당신은 주먹 과 가위 중 하나를 내십시오. 1)주먹, 2)가위, 3)보
주먹 과 가위 중에서 내세요!!
2
컴퓨터는 보를 냈습니다.
당신이 이겼습니다.


당신은 2번 이겼습니다.
컴퓨터는 0번 이겼습니다.
비긴 횟수는 1 회 입니다.