자바

[JAVA] 숫자 야구 게임

코 밑 2023. 7. 19. 11:03
Contents

안녕하세요 코밑이에염

오늘은 간단한 숫자 야구 게임을 만들어보았어요

앗! 숫자 야구 게임을 모르신다고요!???

걱정 말아요! 코밑이가 알려드릴게염!

 

각자 0~9 사이의 서로 다른 3자리 숫자를 정한다 (예: 019, 847, 345 등)
서로 공격과 수비를 반복한다
공격: 상대방이 지닌 숫자를 예상하여 3자리 숫자를 부른다
수비: 공격 숫자와 본인의 숫자를 비교하여 결과를 알려준다
(자리와 숫자가 같은 경우 스트라이크, 숫자만 같을 경우 볼)
먼저 삼진아웃을 당하는 쪽이 게임에서 진다
수비 숫자가 108, 공격 숫자가 903일 경우 1 스트라이크, 708일 경우 2 스트라이크
수비 숫자가 234, 공격 숫자가 456일 경우 1 볼
수비 숫자가 432, 공격 숫자가 235일 경우 1 스트라이크, 1 볼

 

이해가 되셨을까요???

그럼 코드 설명으로 넘어가볼까요!

/*
 * 숫자 야구
 */
package C230718;

import java.util.Random;
import java.util.Scanner;

public class Baseball {
	Random rand = new Random();
	Scanner sc = new Scanner(System.in);
	private int[] input = new int[3];
	private int[] num = new int[3];

	private int st;
	private int ball;
	private int ss = 1;

	void random() { // 랜덤값 세자리 생성
		num[0] = rand.nextInt(10); // 첫번째 자리
		do {
			num[1] = rand.nextInt(10); // 두번째 자리
		} while (num[1] == num[0]); // 첫째랑 같으면 다시
		do {
			num[2] = rand.nextInt(10); // 세번째 자리
		} while (num[2] == num[1] || num[2] == num[0]); // 첫, 둘째랑 같으면 다시
	}
	
	void show() { // 마무리 출력
		for (int i = 0; i < 3; i++) {
			System.out.printf(num[i] + " ");
		}
		System.out.println("");
	}

	void bb() {
		st = 0;
		ball = 0;
		System.out.println(ss + "회 초");
		for (int i = 0; i < 3; i++) { // 세자리 입력
			input[i] = sc.nextInt();
		}

		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 3; j++) {
				if (num[j] == input[j]) { // 입력이랑 랜덤값이랑 같은 자리가 같으면
					st++; // 스트라이크 증가
				}
				else if (num[j] == input[i]) { // 입력이랑 랜덤값이랑 다른 다리가 같으면
					ball++; // 볼 증가
				}
			}
		}
		// 스트라이크 / 3
		if(st/3 == 3) { // 세개 다 맞추면 겜끝
			System.out.println("good game");
			show();
			System.exit(0);
		}else { // 아니면 중간결과 출력 후 다시
			System.out.println("st : " + st/3 + "\nball : " + ball);
		}
		
		ss++; // 회 증가
		bb();
	}
	void main() {
		random();
		bb();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Baseball b = new Baseball();
		b.main();
	}
}

간단하게 만들어봤습니다

그럼 다음에 돌아올게요!

'자바' 카테고리의 다른 글

스프링 시큐리티 + jwt 토큰  (4) 2024.11.29
[자바] 오버라이딩, 오버로딩  (2) 2024.03.28
[자바] 객체지향언어(OOP)  (2) 2024.03.24