숫자야구 게임 입니다. 자릿수에 맞는 값을 맞추는 게임입니다.
먼저 코드입니다.
numberBaseball.java |
import java.util.Scanner;
public class numberBaseball {
int[] user = new int[4];
int[] com = new int[4];
int strike=0, ball = 0, cnt=0;
int i, j;
public void userInput()
{
Scanner input = new Scanner(System.in);
for(i=0; i<4; i++)
{
try
{
System.out.println(i+1+"번째 숫자");
com[i] = Integer.parseInt(input.next());
if(com[i]>9)
{
System.err.println("1에서 9사이의 수만 입력하세요~");
i-=1;
}
} catch (NumberFormatException e) {
System.err.println("숫자만 입력하세요~");
i-=1;
}
}
}
public void comNum()
{
user[0] = 1 + (int)(Math.random() * 9);
user[1] = 1 + (int)(Math.random() * 9);
while(user[0] == user[1])
{
user[1] = 1 + (int)(Math.random() * 9);
}
user[2] = 1 + (int)(Math.random() * 9);
while(user[0]==user[2] || user[1]==user[2])
{
user[2] = 1 + (int)(Math.random() * 9);
}
user[3]=1+(int)(Math.random()*9);
while(user[0]==user[3] || user[1]==user[3] || user[2]==user[3]){
user[3]=1+(int)(Math.random()*9);
}
}
public void correct()
{
System.out.println("정답은 "+"("+user[0] + "," + user[1] + "," + user[2]+","+user[3]+")"+"입니다");
System.out.println(cnt+"회 만에 맞췄네요~");
}
public void countSB()
{
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if((user[i] == com[j]) && (i==j))
{
strike += 1;
}
else if((user[i] == com[j]) && (i!=j))
{
ball += 1;
}
}
}
cnt +=1;
System.out.println(strike+"스트라이크"+ball+"볼");
}
public static void main(String[] args) {
numberBaseball base = new numberBaseball();
System.out.println("숫자야구 입니다. 1에서 9까지의 수를 입력해주세요");
base.comNum();
while(true)
{
base.userInput();
base.countSB();
if(base.strike == 4)
{
break;
}
}
base.correct();
}
}
먼저 유저와 컴퓨터의 값을 집어넣어줄 배열을 4개씩 생성해줍니다.
이후 사용자의 값을 받는 userInput()를 만들었습니다. 이것은 1에서 9까지의 숫자만 받을수 있도록 예외 처리 문장을 사용하여 만들었습니다.
이후 컴퓨터의 값을 만들어주는 comNum()입니다 .
이것은 random() 함수를 사용하여 user[0] = 1 + (int)(Math.random() * 9); 여기서 앞에 1을 더한것은 숫자가 0부터 생성되기 때문입니다.
그리고 중복되는 값이 있으면 다시한번 랜덤으로 수를 받게 만들었습니다.
correct()는 정답을 몇회만에 맞추었는지 나타내는 것이고, countSB는 회마다 숫자를 적을때 내가 몇 스트라이크 몇볼인지를 보여주는 함수입니다.
이후 main에서 실행을 시켜주었습니다.
댓글