본문 바로가기

Java

자바로 숫자야구게임 쉽게 만들기 (배열, 조건문, 반복문 사용)

수업시간에 배운 자바 숫자야구게임!

 

이제 막 자바 배우는 중이라 배열, 조건문 (if문), 반복문 (while문, for문) 만을 사용해 만들었다. 또 이때는 함수 들어가기 전이라 main문에만 코드 꽉꽉 넣어 만들었다.

 

사실 main문에만 넣어서 만든 코드이기때문에 좀.. 많이 별로다. 나중에 함수로 나눈 (method 최근에 배움!) 자바 숫자야구게임도 업로드 할 예정.

 

C언어 먼저 배우고 자바로 갈아타는 중인데 C언어에서 매일 printf, scanf 쓰다가 자바에서 sysout, scanner 쓰니 기분이 이상하다.

 

알고리즘 1도 모르지만 대충 설명하자면..

 

1) 컴퓨터 랜덤값 설정 (세자릿수고, 랜덤 수가 같게 나오면 수가 다시나오도록 설정해주었다.)

 

2) 유저값 설정

 

3) 초기에 스트라이크 = 0, 볼 = 0으로 초기화하고 반복문 통해 마지막에 총 스트라이크 값과 볼 값 계산

 

선생님 코드인데 나는 for문 사용을 못했다. for문 사용하니 코드가 훨씬 깨끗하게 나온다. 모르는 코드는 수업 끝나고 항상 마지막에 주석달아서 정리중~!

 

쪼렙 개발자 지망생은 이런 쉬운 코드에도 허덕입니다.. 나중에 이런건 코웃음 치면서 30초만에 후딱 치는 그런 개발자가 되있었음 좋겠다..!

후 colorscripter 사용하려고 했는데 이상하게 내 컴터에선 안된다.. 눈물 😭

 

package Secondprogram;
import java.util.Random;
import java.util.Scanner;
public class bullsandcow {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner v = new Scanner(System.in);
		Random r = new Random();
		int[] com = new int[3]; // 컴퓨터 1차 배열
		int[] user = new int[3]; // 유저 1차 배열
		int strike = 0; // strike 값을 0으로 초기화
		int ball = 0; // ball 값을 0으로 초기화
		com[0]=r.nextInt(9)+1; // com[] 자리에 1~9까지의 각각의 랜덤수를 투입
		com[1]=r.nextInt(9)+1;
		while(com[0]==com[1]) // 랜덤 수가 같으면 수를 다시 뽑는다
		{
			com[1]=r.nextInt(9)+1;
		}
		com[2]=r.nextInt(9)+1;
		while(com[0]==com[2] || com[1]==com[2]) // 랜덤 수가 같으면 수를 다시 뽑는다
		{
			com[2]=r.nextInt(9)+1;
		}
		for (int x: com) // 확정된 for문! 원래대로라면 for(i=0; i<3; i++) System.out.println(com[i])
		{
			System.out.println(x);
		}
		System.out.println();
		while(true)
		{
			strike =0; // strike 값을 초기화
			ball =0; // ball 값을 초기화
			
			for (int i=0; i<3; i++)
			{
				System.out.print((i+1)+"번째 수를 입력하세요: "); // 편의를 위해 i+1로 입력
				user[i]=v.nextInt();
			}
			if (user[0]==user[1] || user[1]==user[2] || user[0]==user[2]) // user 중복값 확인
			{
				System.out.println("똑같은 입력이 있습니다.");
				continue;
			}
			for (int i=0; i<3; i++) // 2중 배열
			{
				for (int j=0; j<3; j++)
				{
					if (com[j]==user[i])
					{if (i==j) // 똑같은 자릿수에 있는 숫자가 같으므로 스트라이크
						strike ++;
					else
						ball++; // 아니라면 볼
					}
				}
			}
			if (strike==3)
				{System.out.println("홈런입니다.");
				break;}
			else if(strike ==0 && ball ==0)
				{System.out.println("Out입니다.");}
			else 
				{System.out.println("Strike: " + strike +" ," + "Ball :" + ball + "입니다");}
		}
	}
}