본문 바로가기
프로그래밍/② JAVA(자바) 프로젝트

② JAVA(자바) 프로젝트-10 숫자야구 게임 만들기(콘솔버젼) == Making numbers baseball game(console version)

by ronul 2017. 5. 3.
300x250

숫자야구 게임 입니다. 자릿수에 맞는 값을 맞추는 게임입니다.

먼저 코드입니다.

 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에서 실행을 시켜주었습니다.

300x250

댓글