* 숫자 야구 게임?
- 중복되지 않는 4자리 숫자를 맞추는 게임으로 숫자와 자리가 일치하면 Strike, 숫자는 일치하지만 자리가 다르면 Ball 의 결과를 받아 4자리 숫자와 자리를 모두 일치시키는 게임입니다.
코드를 작성하기 앞서 어떤 순서로 진행될지 논리적 흐름을 정해봅시다.
* 흐름
* 자, 순서가 정해졌으니 코드로 옮겨볼까요?
A. import 하기
B. 변수 정하기
C. 사용한 것들
D. 소스코드 작성
import java.util.ArrayList;
import java.util.Scanner;
import java.util.stream.Stream;
public class BaseballGame {
public static void main(String[] args) {
// 숫자야구 게임
Scanner scan = new Scanner(System.in);
System.out.println("========================");
System.out.println(" ※ 숫자 야구 게임※");
System.out.println("========================");
//랜덤 네자리 숫자 생성(정답)
int[] comNum = new int[4];
for (int i = 0; i < comNum.length; i++) {
comNum[i] = (int) (Math.random()*9 + 1);
//중복제거
for (int j = 0; j < i; j++) {
if (comNum[i] == comNum[j]) {
i--;
}
}
}
System.out.println("* 4자리 숫자가 생성되었습니다.");
int cnt = 0;
String result = "";
loop:
while(!result.equals("4S0B")) { //4S로 일치시까지 반복
System.out.print("* 숫자 입력(4자리): ");
int num = scan.nextInt();
int[] userNum = Stream.of(String.valueOf(num).split("")).mapToInt(Integer::parseInt).toArray();
//중복 숫자를 입력한 경우 재입력
for (int i = 0; i < userNum.length; i++) {
for (int j = 0; j < i; j++) {
if(userNum[i] == userNum[j]) {
System.out.println("* 중복된 숫자는 입력할 수 없습니다.");
continue loop;
}
}
}
//입력한 숫자와 정답 숫자 비교
ArrayList<String> comparison = new ArrayList<>();
//숫자 비교
for (int i = 0; i < comNum.length; i++) {
for (int j = 0; j < userNum.length; j++) {
if(i == j && comNum[i] == userNum[j]) { //자리와 숫자가 모두 일치시
comparison.add("S");
}
if(i != j && comNum[i] == userNum[j]) { //자리는 다르지만 숫자만 일치시
comparison.add("B");
}
}
}
//S, B 개수 카운트
int cntS = (int) comparison.stream().filter(x -> x.equals("S")).count();
int cntB = (int) comparison.stream().filter(x -> x.equals("B")).count();
//비교 결과 출력
result = String.format("%dS%dB", cntS, cntB);
System.out.println(result);
cnt++; //도전 횟수 카운트
}
//최종 결과 출력
System.out.println("========================");
System.out.print("도전[" + cnt + "회], 정답 숫자: ");
for (int i = 0; i < comNum.length; i++) {
System.out.print(comNum[i]);
}
System.out.println("\n☆★게임종료★☆");
System.out.println("========================");
}
}
저는 운이 좋아 6번만에 정답을 찾았네요 ㅋㅋ 더 빨리 정답을 맞춰보세요.
* 재밌는 예제를 통해서 쉽게 배워봅시다. - 끝 -
[Java] 1. Java SE Version 변화 소개 (0) | 2023.08.03 |
---|---|
로또 번호 생성 (0) | 2023.01.16 |
홀짝 맞추기 게임을 자바로 구현해 보자!!(feat.오징어게임) (0) | 2022.12.02 |
댓글 영역