본문 바로가기
JAVA

자바 랜덤 숫자 맞추기 게임, 업 다운 숫자 퀴즈 만들기 in 자바기초

by helloissue 2021. 9. 10.

숫자 맞추기 게임이란? 컴퓨터가 임의의 숫자를 생성하고, 그 숫자를 플레이어가 맞추는 게임으로써, 이제 시작하는 자바 어린이들이 꼭 거치게 되면서 만들어보는 자바의 정석과 같은 게임이다.  생성되는 난수 생성을 최솟값과 최댓값을 주어, 난수의 범위 조절이 가능하며, 총 몇 번 호출이 되었는지도 체크가 가능하다.

 

1. 업, 다운 숫자 맞추기 게임

 

메인 함수 안에 복사 & 붙여 넣기 하시면 됩니다. 최솟값과 최댓값을 변경해서 난이도를 조절해보세요.  WHILE 절을 어떻게 빠져나오는지 BREAKE구문을 살펴보세요. 랜덤 한 함수를 어떻게 가져오는지 한번 살펴보세요.

String sGameName    = " 자바 랜덤 숫자 맞추기 게임"; 
String[] asMungu    = { " 더욱 더 작은 수입니다.", " 더욱 더 큰 수입니다." , " 맞췄습니다." };
// { " down", " up" ," bing go"};
String sTempInner   = null; //결과문구

boolean bLastLog    = false;
boolean bStop       = false;
int iTotalCnt       = 0; // 시도횟수  
int iMin            = 1; // 최소
int iMax            = 20;// 최대
int iRrandomNum     = ( int ) ( Math.random() * ( iMax ) ); 
if( iRrandomNum < iMin ) iRrandomNum = iMin; //임의의 숫자
int iInputNum       = 0; // 입력된 숫자
sTempInner          = ( iMin - 1 ) + asMungu[ 1 ]; //첫 번째 힌트
java.util.Scanner sUserIn = new java.util.Scanner( System.in );
 
 
try { 
	 
	System.out.println( iMin + "~" + iMax + sGameName ); // 제목 
	 
	//맞출때까지 
	while( ! bStop ) { System.out.print( sTempInner + " 숫자를 입력하세요."); iTotalCnt ++;
	 
		iInputNum = sUserIn.nextInt();
	 	
	 	if(       iInputNum > iRrandomNum ) { sTempInner = iInputNum + asMungu[ 0 ] ;
	 		
	 	}else if( iInputNum < iRrandomNum ) { sTempInner = iInputNum + asMungu[ 1 ] ;
	 		
	 	}else {                               sTempInner = iInputNum + asMungu[ 2 ] ;   
	 		bStop = true; 	break;
	 	}
	 	
	}
	 
    System.out.println( sTempInner +" 총"+ iTotalCnt +"번 시도하였습니다."); //결과
    if( iTotalCnt <= 10  && bLastLog ) {
         System.out.println("천재"); 
    }
	 
}catch (Exception e) {
	 e.printStackTrace();
}finally {
	 try { if( sUserIn != null ) { sUserIn.close(); }}catch (Exception ee) { }	
	 asMungu=null; sTempInner=null; sUserIn=null;
}
//1~20 자바 랜덤 숫자 맞추기 게임
//0 더욱 더 큰 수입니다. 숫자를 입력하세요.10
//10 더욱 더 큰 수입니다. 숫자를 입력하세요.15
//15 맞췄습니다. 총2번 시도하였습니다.

 

2. 랜덤 숫자 맞추기 게임

 

또 다른 버전입니다. 이용자의 입력을 받아내는 스캐너, 랜덤 한 숫자를 받아오는 매스. 랜덤 , 범위를 지정하는 최솟값과 최댓값의 적용, 무한으로 반복하는 WHILE 절을 활용하면 쉽게 게임을 만들 수 있습니다.

String sGameName    = " 자바 랜덤 숫자 맞추기 게임"; 
int iTotalCnt       = 0; // 시도횟수  
int iMin            = 1; // 최소
int iMax            = 20;// 최대
int iRandomNum      = ( int ) ( Math.random() * ( iMax ) ); 
if( iRandomNum < iMin ) iRandomNum = iMin; //임의의 숫자
int iInputNum       = 0; // 입력된 숫자

java.util.Scanner sUserIn 	= new java.util.Scanner( System.in );

System.out.println(sGameName);

while (true) {
	
	System.out.println( iMin+" 부터 "+iMax+" 사이의 정수를 입력해주세요. ");
	
	iInputNum = sUserIn.nextInt(); iTotalCnt++;
	
	if ( iRandomNum < iInputNum ){
		
		System.out.println(" 더 작은 수입니다.");
		
	}else if (iRandomNum > iInputNum) {
		
		System.out.println(" 더 큰 수입니다.");
		
	}else {
		System.out.println(" 정답입니다."+" 총 "+iTotalCnt+" 시도");
		break;
	}
    
        if( iTotalCnt >= 500 ) { //횟수제한
            System.out.println(" 실패입니다."+" 총 "+iTotalCnt+" 시도 정답="+ iRandomNum );
            break;
        }
} 

if( sUserIn != null ) sUserIn.close();

 

마치면서 복사가 안되거나 불편하시면 댓글 달아주세요. 바로 수정하겠습니다. 

댓글