Basic/Java

자바 가위바위보 게임 만들기(if 문 활용 while문 활용)

카고형 2020. 3. 13. 01:12
728x90
java  if문 문제
 
[문제 ]
if else 문을 이용 해서 가위 바위 보 를 하는 프로그램을 만들어보자
 
(가위 바위 보)에 지정된 숫자를 입력 받고 그 숫자와 램덤 한 컴퓨터 숫자와
비교해서 승부를 가려보자
   
 
 
 
실행결과는 
 
 
 
 
 
 
 

기본적으로 if 문을 사용하고 Random , Scanner 을 사용함
 
코드는
import java.util.Random;    //램덤한 수
import java.util.Scanner; //입력 받는거
 
 
import java.util.Random;
import java.util.Scanner;
public class Main {
       public static void main(String[] args) {
             Scanner sc = new Scanner(System.in);
             System.out.println("## 가위 바위 보 게임 ##");
             System.out.println("( 1.주먹 2.가위  3.보)");
             System.out.print("숫자을 입력하세요 :");
             int com = 0;
             int user = sc.nextInt();
             Random r =new Random();
 
             com = r.nextInt(3)+1; 
  // r.nextInt(3)은 0~2 에 숫자 중 램덤하게 나오기 때문에 +1 을 해서 1~3에 수가 나올수있게함  
             
  System.out.println("유저 "+user);
             System.out.println("컴퓨터"+com);
             
             if(user == 1) {
                    if(com == 2) {
                           System.out.println("승리");
                    }
                    else if(com == 3) {
                           System.out.println("패배");
                    }
                    else {
                           System.out.println("무승부");
                    }
             }
             else if(user == 2) {
                    if(com == 2) {
                           System.out.println("무승부");
                    }
                    else if(com == 3) {
                           System.out.println("승리");
                    }
                    else {
                           System.out.println("패배");
                    }
             }
             else if(user == 3) {
                    if(com == 2) {
                           System.out.println("패배");
                    }
                    else if(com == 3) {
                           System.out.println("무승부");
                    }
                    else {
                           System.out.println("승리");
                    }
             }
             else {
                    System.out.println("다시 입력 해주세요!!");
             }
             
             sc.close();
       }
}
 
 

 

 

 

 

while 문으로 묶어서 계속 실행 하기

 
 막상 쓰려고 하니까 길지 않나요? 어떻게하면 코드을 더 줄일 수 있을 까요? 
hint :!! 밑에 코드 주석을 잘 보세요!! (규칙 찾기)
 
public class Main {
       public static void main(String[] args) 
       {                  
       while(true) {
       Scanner sc = new Scanner(System.in);
       System.out.println("==========================");
           System.out.println("## 가위 바위 보 게임 ##");
           System.out.println("( 1.주먹 2.가위  3.보 4.나가기)");
           System.out.print("숫자을 입력하세요 :");
       int com = 0;
       Random r = new Random();
       
       int user = sc.nextInt();
       com = r.nextInt(3)+1;
       System.out.print("결과는요?       ");
 
 
//user - com ???
if (user == 1) {//1일때
if (com == 2) {//-1
System.out.println("< 승  리 >");
} else if (com == 3) {//-2
System.out.println("< 패  배 >");
} else {//0
System.out.println("<무  승   부>");
}
} else if (user == 2) {//2일때
if (com == 2) {//0
System.out.println("<무  승   부>");
} else if (com == 3) {//-1
System.out.println("< 승  리 >");
} else {//1
System.out.println("< 패  배 >");
}
} else if (user == 3) {3일때
if (com == 2) {//1
System.out.println("< 패  배 >");
} else if (com == 3) {//0
System.out.println("<무  승   부>");
} else {//2
System.out.println("< 승  리 >");
}
} else {
System.out.println("=========================");
System.out.println("\t게임끝");
}
       }
       
}
}
 
 
 
음 일단 승리 패배 무승부는 규칙이 있다고 볼 수 있어요 
 
승리 할 경우는 user 가 1, 2, 3 일때 com이 2, 3, 1 이고 user - com 은 -1 , -1,  2 
 
무승부는 같을 경우 숫자가 같은 경우 이기 때문에 user - com 은 모두 0 이됩니다.
 
패배 에경우는 user 가 1,2,3 일때 3, 1, 2 이 오면 되고 user - com 은 -2, 1, 1  
 
 
 
추가한것은 조건 문 쓸때  | | (보통 엔터주변 Shift + \ ) 써서 or 이라는 건데 또는 이라는 표시입니다.
 
줄인건 밑에 있어요^^...
 
if(user >= 4 || user <= 0) 하면 0이하 4이상의 수을 입력하면 게임이 끝나도록 하는게 좋을까요? ㅎ 

 

 

 

728x90

'Basic > Java' 카테고리의 다른 글

[Java] 반복문 while for 흐름제어  (0) 2020.03.20
{Java} 조건문 if문 switch문 (문제 포함)  (0) 2020.03.13
{Java} 콘솔 입출력(문제 포함)  (0) 2020.03.12
{Java} 연산자 문제  (0) 2020.03.11
{Java} 연산자(Operator)  (0) 2020.03.11