본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA 8장 mini project 글자 추측 게임(행맨 게임)

by prlkt5200 2022. 10. 27.
반응형

안녕하세요 문제 푸는데, 점점 더 시간이 걸리고 하다보니 포스팅이 점점 더 느려지는 감이 있네요

그래도 차근차근히 나가고 있다는 사실이 중요한 것 같습니다 ㅎㅎ

솔직히 아직까지는 간단 명료하게 풀이를 하지는 못하지만, 그래도 집념과 흐릿하게나마 떠오르는 생각+감 덕분에 문제를 풀 수 있었습니다.

주석은 올릴까 하다가...다른 분들이 보시는 데 오히려 헷갈려 하실 수도 있어서 올리지않겠습니다.

혹시 해석 원하시는 분은 댓글에 남겨주시면, 해석설명 올리겠습니다.

 

지금 올리는 문제는 (https://aeunhi99.tistory.com/157) 코딩못하는 컴공님의 블로그를 참조하였습니다.

(22.10.28 수정: 뭔가 보기 어려운 부분이 있어 수정하였습니다.)

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
package test;
 
import java.util.Random;
import java.util.Scanner;
 
public class HangMan {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] words = { "java" + "count""school""book""student""programmer" };
        int num = 0;
        int index = (new Random()).nextInt(words.length);
        boolean b = true;
        int count = 1;
 
        String solution = words[index];
        StringBuffer answer = new StringBuffer(solution.length());
        StringBuffer display = new StringBuffer(solution.length());
 
        for (int i = 0; i < solution.length(); i++) {
            display.append("_");
 
        }
        System.out.println("답은: " + solution);
        System.out.println("행맨 게임에 오신 것을 환영합니다");
        System.out.println("현재 상태: " + display);
 
        System.out.println("글자를 추측하세요: ");
        char c = sc.next().charAt(0);
        while (b) {
            if (c == solution.charAt(num)) {
                
                answer.insert(num, c);
                display.deleteCharAt(num);
                display.insert(num, c);
                num++;
 
                System.out.println("계속 입력하세요: ");
                c = sc.next().charAt(0);
                
                if (c != solution.charAt(num)) {
                    System.out.println("잘못 입력하였습니다. 전에 글자부터 다시 입력하세요");
                    num--;
                    answer.deleteCharAt(num);
                    c = sc.next().charAt(0);
                    continue;
                }
                
                if (answer.toString().equals(solution)) {
                    System.out.println("축하합니다. 클리어입니다.");
                    b = false;
                }
                
            } else if (c != solution.charAt(num)) {
                System.out.println("처음부터 잘못 입력하였습니다. 다시 입력하세요");
                c = sc.next().charAt(0);
                continue;
            }
        }
 
    }
}
 
cs
반응형