Uknow's Lab.
article thumbnail
Published 2022. 2. 15. 00:32
[Java] 숫자 야구 게임 언어/Java

어렸을 적 많이 해봤던 숫자 야구 게임.

입력한 값의 숫자와 정답의 숫자의 같은 자릿수의 숫자가 같다면 Strike

자릿수는 다르나 같은 숫자가 있다면 Ball 이며,

3 Strike 일 경우 게임을 승리한다.

 

 

- 랜덤 난수 생성 -

 

 
public Random_answer_generating() // 랜덤 난수(정답) 생성
	{
		answer = new int[3];
		
		for(int i = 0;i<3;i++)
		{
			answer[i] = ran.nextInt(9)+1; // 1~9 까지 랜덤 난수 생성
			for(int k = 0;k<i;k++)
			{
				if(answer[i] == answer[k]) //answer[i]와 이전의 answer 배열이 같을 경우 i를 1만큼 감소시킨다
					i--; 
			}
		}
	}

 

랜덤하게 난수를 생성하는 소스코드.

알고리즘은 간단하다.

현재 만든 answer 값과

이전의 만든 answer 값을 비교하여, 값이 중복될 경우 i를 1만큼 감소시켜 새로운 answer를 만든다.

 

 

 

- Strike / Ball 판별 -

 

 

public int[] judge(int[] num) //int[] num은 입력받은 값(3 개의 숫자) 이다
	{
		int[] stbal = {0,0}; //strike와 ball의 횟수를 넣을 배열. 본 코드에서는 [0]에 ball을 넣고 [1]에 strike를 넣는다.
		
		for(int i = 0; i<3;i++)
		{
			if(num[i] == answer[i])  // 만약 각 자릿수와 숫자가 일치할경우 strike 이다.
				stbal[1]++;
			else
			{
				for(int k = 0; k<3;k++)
				{
					if(num[i] == answer[k]) // 숫자가 같으면 ball 이다.
						stbal[0]++;         // else 문으로 뺐기 때문에 자릿수와 숫자가 일치(strike)하는 경우는 신경쓰지 않아도 된다.
				}
			}
		}
		
		return stbal;
	}

 

 

해당 로직을 기반으로 하여 자바의 Swing을 사용해 개발된 GUI 버전도 있으니,

흥미가 있으시다면 아래 글도 한 번 방문해주세요.

https://uknowblog.tistory.com/202

 

[Java] 자바 Swing을 사용한 GUI 숫자 야구 게임

앞서 포스팅했던 2048과 마찬가지로, 자바를 처음 배울 당시, Swing 파트를 배울 즈음 만들었던 프로젝트 입니다. https://uknowblog.tistory.com/2 [Java] 숫자 야구 게임 어렸을 적 많이 해봤던 숫자 야구 게

uknowblog.tistory.com

 

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.