안녕하세요, 작가 J입니다. 이번에는 두 개의 랜덤 정수를 더한 값을 맞추는 게임을 만들어 보겠습니다. 사용자는 두 정수의 합을 입력하며, 맞추지 못하면 최대 5번의 기회가 주어집니다. 5번 틀리면 게임이 종료됩니다.
[Java Festival 29] 두 정수의 합 맞추기 게임
랜덤으로 정수 2개를 뽑아 아래와 같이 출력
사용자는 두 수의 합을 입력
두 수의 합과 입력한 수가 일치하면 "Success"
두 수의 합과 입력한 수가 일치하지 않으면 "Fail"을 출력
* 기회는 5번! 5번 틀리면 GAME OVER
코드 풀이 1: 기본 방식
package Ex;
import java.util.Random;
import java.util.Scanner;
public class Ex29 {
public static void main(String[] args) {
Random rd = new Random();
Scanner sc = new Scanner(System.in);
int num1 = 0, num2 = 0, failCount = 0;
while (failCount < 5) { // 실패 횟수가 5보다 작을 때 반복
num1 = rd.nextInt(9) + 1; // 1부터 9까지의 랜덤 정수 생성
num2 = rd.nextInt(9) + 1; // 1부터 9까지의 랜덤 정수 생성
System.out.print(num1 + " + " + num2 + " = "); // 문제 출력
int answer = sc.nextInt(); // 사용자 입력 받기
if (answer == num1 + num2) { // 정답 확인
System.out.println("SUCCESS!"); // 정답이면 SUCCESS 출력
} else {
System.out.println("Fail..."); // 오답이면 Fail 출력
failCount++; // 실패 횟수 증가
}
}
System.out.println("GAME OVER!"); // 실패 횟수가 5번이 되면 게임 종료
sc.close(); // Scanner 객체 닫기
}
}
1. 랜덤 및 스캐너 객체 생성
- Random rd = new Random();
- Scanner sc = new Scanner(System.in);
2. 변수 초기화
- int num1 = 0, num2 = 0, failCount = 0;
3. 게임 루프
- while (failCount < 5) { ... }
- 실패 횟수가 5번 미만일 때 반복합니다.
4. 랜덤 정수 생성 및 문제 출력
- num1 = rd.nextInt(9) + 1;
- num2 = rd.nextInt(9) + 1;
- System.out.print(num1 + " + " + num2 + " = ");
5. 사용자 입력 및 정답 확인
- int answer = sc.nextInt();
- if (answer == num1 + num2) { ... }
- 정답이면 "SUCCESS!" 출력
- else { ... }
- 오답이면 "Fail..." 출력 및 실패 횟수 증가
6. 게임 종료
- System.out.println("GAME OVER!");
코드 풀이 2: Math.random()을 사용한 방식
package Ex;
import java.util.Scanner;
public class Ex29Alternative {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int failCount = 0;
final int MAX_TRIES = 5;
while (failCount < MAX_TRIES) { // 실패 횟수가 최대 시도 횟수보다 작을 때 반복
int num1 = (int)(Math.random() * 9) + 1; // 1부터 9까지의 랜덤 정수 생성
int num2 = (int)(Math.random() * 9) + 1; // 1부터 9까지의 랜덤 정수 생성
System.out.print(num1 + " + " + num2 + " = "); // 문제 출력
int userAnswer = sc.nextInt(); // 사용자 입력 받기
if (userAnswer == num1 + num2) { // 정답 확인
System.out.println("SUCCESS!"); // 정답이면 SUCCESS 출력
} else {
System.out.println("Fail..."); // 오답이면 Fail 출력
failCount++; // 실패 횟수 증가
}
}
System.out.println("GAME OVER!"); // 실패 횟수가 최대 시도 횟수에 도달하면 게임 종료
sc.close(); // Scanner 객체 닫기
}
}
1. 랜덤 정수 생성 및 문제 출력
- int num1 = (int)(Math.random() * 9) + 1;
- int num2 = (int)(Math.random() * 9) + 1;
- System.out.print(num1 + " + " + num2 + " = ");
마무리
이번 예제에서는 두 개의 랜덤 정수를 더한 값을 맞추는 게임을 두 가지 방식으로 구현해 보았습니다. 첫 번째 방식은 Random 클래스를 사용한 방식이며, 두 번째 방식은 Math.random() 함수를 사용한 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.
프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!
'프로그래밍 기초 > Java Festival' 카테고리의 다른 글
[Java Festival] 31. 팩토리얼 계산하기 (0) | 2024.07.07 |
---|---|
[Java Festival] 30. 알파벳 빈도수 구하기 (0) | 2024.07.07 |
[Java Festival] 28. 2진수를 10진수로 변환하기 (0) | 2024.07.05 |
[Java Festival] Bonus06. 거듭제곱 계산하기 (0) | 2024.07.05 |
[Java Festival] 27. Java 시험 문제 채점하기 (0) | 2024.07.05 |