1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
| import java.util.*;
public class WordGuessGame {
// 최대 시도 횟수 (틀릴 수 있는 기회)
private static final int MAX_TRIES = 9;
// 단어 목록: 컴퓨터가 이 중 하나를 선택함
private static final List<String> WORDS = Arrays.asList(
"airplane", "apple", "arm", "aunt", "back", "bag", "ball", "bank", "bat", "bed", "bicycle", "bird",
"body", "book", "boy", "bread", "bus", "cake", "camera", "cap", "car", "classroom", "clock", "coat",
"computer", "cow", "cup", "dad", "daughter", "desk", "doctor", "dog", "door", "ear", "egg", "eye",
"face", "fan", "farm", "father", "finger", "fish", "floor", "flower", "food", "foot", "fork", "friend",
"game", "garden", "girl", "glove", "goat", "grandfather", "grandmother", "grape", "hair", "hand",
"hat", "head", "helicopter", "hospital", "house", "jeep", "jelly", "jet", "joke", "juice", "key",
"kitchen", "kite", "leg", "library", "lips", "man", "map", "milk", "mirror", "mom", "monkey", "moon",
"motorcycle", "mouth", "musician", "neck", "nurse", "pencil", "picture", "pig", "pilot", "pizza", "police",
"pool", "rabbit", "rain", "ring", "robot", "room", "school", "shark", "shirt", "shoe", "sky", "snake",
"sock", "spoon", "star", "stationary", "strawberry", "student", "sun", "supermarket", "table", "teacher",
"television", "tiger", "toe", "tooth", "train", "truck", "uncle", "window", "zoo"
);
// 메인 메서드: 프로그램의 시작점
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 사용자 입력을 위한 Scanner 객체
Random random = new Random(); // 랜덤 단어 선택을 위한 Random 객체
// 정답 단어를 무작위로 선택하고 대문자로 변환
String answer = WORDS.get(random.nextInt(WORDS.size())).toUpperCase();
// 이미 맞힌 글자를 저장하는 집합 (중복 제거)
Set<Character> guessed = new HashSet<>();
int remainingTries = MAX_TRIES; // 남은 시도 횟수
System.out.println("🔤 단어 맞추기 게임 시작! 기회는 " + MAX_TRIES + "번입니다.");
// 게임 루프: 기회가 남아 있는 동안 반복
while (remainingTries > 0) {
boolean allRevealed = true; // 모든 글자를 맞췄는지 여부
// 현재까지 맞힌 단어 형태 출력 (예: P _ _ T _ R E)
System.out.print("현재 단어: ");
for (char c : answer.toCharArray()) {
if (guessed.contains(c)) {
System.out.print(c + " ");
} else {
System.out.print("_ ");
allRevealed = false;
}
}
System.out.println();
// 정답을 모두 맞췄으면 게임 종료
if (allRevealed) {
System.out.println("🎉 정답입니다! 단어: " + answer);
break;
}
// 사용자에게 글자 입력 받기
System.out.print("남은 기회: " + remainingTries + " | 글자를 입력하세요: ");
String input = scanner.nextLine().toUpperCase();
// 입력 유효성 검사 (한 글자, 알파벳 여부 확인)
if (input.length() != 1 || !Character.isLetter(input.charAt(0))) {
System.out.println("⚠️ 한 글자만 입력해주세요.");
continue;
}
char guess = input.charAt(0); // 사용자가 입력한 글자
// 이미 시도한 글자인지 확인
if (guessed.contains(guess)) {
System.out.println("이미 시도한 글자입니다.");
continue;
}
// 새로 시도한 글자 저장
guessed.add(guess);
// 정답에 해당 글자가 있는지 확인
if (!answer.contains(String.valueOf(guess))) {
remainingTries--; // 틀렸으면 기회 줄이기
System.out.println("❌ 틀렸습니다.");
} else {
System.out.println("⭕ 정답입니다!");
}
}
// 모든 기회를 소진했을 때
if (remainingTries == 0) {
System.out.println("😢 기회를 모두 사용했습니다. 정답은: " + answer);
}
scanner.close(); // Scanner 자원 정리
}
}
|