-
Connect
IP Port 비고 localhost 8888 local 127.0.0.1 8888 LoopBack IP
- HangMan 서버에 접속하여 클라이언트가 게임을 진행한다.
- Socket 을 이용한 서버 - 클라이언트 구성
- app-server의 ServerApp 실행을 통한 서버 실행
- app-client의 ClientApp 실행을 통한 클라이언트 실행
- Thread Pool을 통하여 각 클라이언트와 동시에 게임이 진행된다.
- Game : 행맨 게임 구성
- Server-Client : 소켓 프로그래밍을 통한 서버-클라이언트 연결 구성
- UI : 게임TUI 구성
- Code : 에러처리 수정
- PM : 아이디어 제출, 게임 구성방안
- Code : API 구성 및 리팩터링
📦bitcamp-project4
┣📦app-client
┃ ┣📂main
┃ ┃ ┣ 📂java
┃ ┃ ┗ 📂bitcamp
┃ ┃ ┃ ┗ 📂project4
┃ ┃ ┃ ┃ ┣ 📂command
┃ ┃ ┃ ┃ ┃ ┗ 📂quiz
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜QuizAddCommand.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜QuizDeleteCommand.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜QuizListCommand.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜QuizUpdateCommand.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜QuizViewCommand.java
┃ ┃ ┃ ┃ ┣ 📂listener
┃ ┃ ┃ ┃ ┃ ┗ 📜InitApplicationListener.java
┃ ┃ ┃ ┃ ┗ 📜ClientApp.java
┣📦app-common
┃ ┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂bitcamp
┃ ┃ ┃ ┗ 📂project4
┃ ┃ ┃ ┃ ┣ 📂command
┃ ┃ ┃ ┃ ┃ ┗ 📜Command.java
┃ ┃ ┃ ┃ ┣ 📂context
┃ ┃ ┃ ┃ ┃ ┗ 📜ApplicationContext.java
┃ ┃ ┃ ┃ ┣ 📂listener
┃ ┃ ┃ ┃ ┃ ┗ 📜ApplicationListener.java
┃ ┃ ┃ ┃ ┣ 📂menu
┃ ┃ ┃ ┃ ┃ ┣ 📜AbstractMenu.java
┃ ┃ ┃ ┃ ┃ ┣ 📜Menu.java
┃ ┃ ┃ ┃ ┃ ┣ 📜MenuGroup.java
┃ ┃ ┃ ┃ ┃ ┗ 📜MenuItem.java
┃ ┃ ┃ ┃ ┣ 📂myapp
┃ ┃ ┃ ┃ ┃ ┣ 📂dao
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂stub
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜QuizDaoStub.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜QuizDao.java
┃ ┃ ┃ ┃ ┃ ┗ 📂vo
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Quiz.java
┃ ┃ ┃ ┃ ┣ 📂net
┃ ┃ ┃ ┃ ┃ ┗ 📜ResponseStatus.java
┃ ┃ ┃ ┃ ┗ 📂util
┃ ┃ ┃ ┃ ┃ ┗ 📜Prompt.java
┣📦app-server
┃ ┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂bitcamp
┃ ┃ ┃ ┗ 📂project4
┃ ┃ ┃ ┃ ┣ 📂dao
┃ ┃ ┃ ┃ ┃ ┣ 📂skel
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜QuizDaoSkel.java
┃ ┃ ┃ ┃ ┃ ┗ 📜ListQuizDao.java
┃ ┃ ┃ ┃ ┣ 📂listener
┃ ┃ ┃ ┃ ┃ ┗ 📜InitApplicationListener.java
┃ ┃ ┃ ┃ ┣ 📜Hangman.java
┃ ┃ ┃ ┃ ┗ 📜ServerApp.java
┃ ┣📜data.xlsx
- Server에 저장되어 있는 data.xlsx 을 통하여 문제가 진행된다.
- Topic을 통하여 단어를 추론한다.
- 중복 알파벳은 에러처리
- 시도 횟수는 글자수 +4
- 일정 횟수 이상 틀릴 시 Hint 제공
- 단어 추론에 성공할 시 승리
- 단어 추론에 실패할 시 패배
Data Stream을 통하여 data.xlsx에 Sheet [quizs] 를 만들어 HangMAN Game에 사용할 데이터를 만들고 Socket을 통해 Server-Client의 통신을 하여 Server에 구현되어 있는 Thread Pool을 통해 각각 Client는 랜덤한 Game을 진행하는데 처음 데이터 sheet를 구현할 때 어떻게 데이터를 구성해둘지 Thread 구성 전 계속 동일한 퀴즈가 나오는 등 여러가지 문제, Server와 Client가 계속 Socket 연결이 끊어지는 등 여러가지 문제들이 많았지만 다행히 발표 전 StateLess 방식으로 변경하여 해결하였습니다.



