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 |