행맨 게임 룰
1. 어떤 단어가 답인 경우 해당 단어의 길이만큼 _를 출력해준다.
ex) apple이 답인경우 _ _ _ _ _를 출력
2. 사용자가 알파벳을 하나 입력하는 경우 해당 알파벳이 포함되어 있다면 _를 알파벳으로 바꾼다
ex) 사용자가 p를 입력했다면 _ p p _ _ 로 변경
3. 사용자가 모든 _를 제거하면 몇 번만에 맞췄는지 출력해주세요
4. 정답 단어는 단어들이 적혀있는 파일에서 하나를 랜덤으로 뽑아주세요
[print_txt]
행맨 게임을 하기 위해 영단어가 들어있는 파일 안에서
개행(/n)을 기준으로 영단어를 가져오는데 배열로 받는다면 받을 공간의 사이즈를 미리 지정해줘야 하기 때문에
동적 할당을 해주는 ArrayList를 이용해 파일 안의 단어를 입력받는다
(동적 할당은 그때그때 필요한 메모리를 할당한다, 사이즈 조절도 필요할 때마다 가능하다)
그리고 Collections에 shuffle이라는 기능을 이용하여 단어를 마구잡이로 섞어서 리턴하여준다.
path = print_txt 메서드에 전해줄 텍스트 파일의 위치를 담은 변수이다.
loop = 게임의 시작과 끝을 true, false로 조절해 주는 역할을 하는 변수이다.
count = 정답을 맞히는데 걸린 회수를 체크해 줄 변수이다.
chk_under = 배열 안에 언더 바가 몇 개 담겨있는지 카운트해 줄 변수이다.
HangMan의 생성자이다 메인에 호출하면 바로 게임을 실행할 수 있게 만들었다.
print_txt를 이용해 받아온 단어를 toLowerCase와 toCharArray를 이용해 char타입 배열로 만들며 소문자로 변환
시켜주었고 check라는 String타입 배열에 받아온 단어만큼의 사이즈의 공간을 만들어주고
언더바를 채워주었다.
이제 for문과 if문을 이용하여 언더 바로 가득 차 있던 check배열을 정답을 맞힐 때마다 하나씩 바꿔주는데
user로 사용자에게 입력받은 단어가 chars(랜덤으로 받은 char타입 영단어 배열) 안에 있는 단어를 하나씩 검사하여
같을 때마다 check안에 유저가 입력한 단어를 넣어주고 check안에 있는 단어들을 콘솔로 출력하여
맞았는지 틀렸는지 보여준다.
(user도 toLowerCase를 이용하여 소문자로 전부 변환시켜주고 charAt을 이용하여 사용자가 입력한 영단어의
첫 번째 단어만 가져올 수 있게 하였다)
그 이후에는 for문과 if문을 한 번 더 이용하여 check안에 _(언더바)가 몇 개 있는지 체크해주고
loop변수를 이용하여 만약 사용자가 정답을 다 맞혀서 언더 바가 하나도 없다면 loop를 false로 만들어
게임을 멈추게 하여 종료시켜준다.
chk_under가 한번 돌 때마다 0으로 초기화되는 이유는 언더 바가 나오지 않을 때마다 체크하여
나오지 않은 값이 정답이 들어있는 check의 변수의 길이와 같다면 loop를 false로 바꿔 게임을 종료시키는 건데
만약 값이 계속 쌓인다면
와일 문을 한번 돌 때의 값을 체크해 줄 수 없기 때문이다.
'공부 > Java 복습' 카테고리의 다른 글
Java 핸드폰 번호 검사 (0) | 2021.08.12 |
---|---|
Java 사용 가능 주민등록 체크 (0) | 2021.08.11 |
스윙을 이용한 퍼즐 만들기 (0) | 2021.07.29 |
Lotto 로또 당첨 게임 (0) | 2021.07.22 |
BruteForce (0) | 2021.07.21 |