어렸을 적 많이 해봤던 숫자 야구 게임.
입력한 값의 숫자와 정답의 숫자의 같은 자릿수의 숫자가 같다면 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' 카테고리의 다른 글
상속과 자바 Stack 클래스의 문제점 (0) | 2023.06.20 |
---|---|
자바, 코틀린을 위한 인텔리제이(Intellij IDEA) 설치방법 (0) | 2023.03.08 |
[Java] 자바 다운로드 및 설치 방법 및 환경 변수 설정 (2) | 2023.03.07 |
[Java] 자바 Swing을 사용한 GUI 숫자 야구 게임 (0) | 2023.02.18 |
[Java] 자바 Swing을 사용한 GUI 2048 (0) | 2023.02.18 |