Swing 기반 GUI 클라이언트와 Java 서버로 구성된 2인용 네트워크 오목입니다.
서버는 클라이언트 인증·턴·시간 제한·채팅을 관리하고, 클라이언트는 로그인/로비/보드/채팅 UI를 제공합니다.
- 사용자 로그인 & 회원가입: 간단한 계정 DB(
users.db)에 SHA-256 해시로 저장합니다. - 슬롯 관리: 서버는 항상 두 명까지만 수락하며, 슬롯이 비면 즉시 재사용합니다.
- 35초 턴 타이머: 타이머가 0이 되면 자동으로 턴이 넘어가고 시간이 초기화됩니다.
- 채팅 및 리매치 안내: 채팅 창, 리매치 요청/대기/수락 메시지가 모두 GUI 알림으로 표시됩니다.
- 안전한 리매치: 두 플레이어가 모두 다시하기를 누를 때까지 상대 대기 상태를 보여주고, 새 게임이 시작되면 보드·타이머를 완전히 초기화합니다.
OmokServer/OmokServer.java: 서버 진입점, 슬롯/타이머/리매치/브로드캐스트 관리OmokServer/ClientHandler.java: 클라이언트별 스레드, 인증 흐름 제어OmokServer/GameBoard.java: 서버 측 보드 상태 및 승리/무승부 판정OmokServer/UserManager.java: 사용자 등록 및 인증, 파일 저장OmokClient/OmokClient.java: 로그인 창 및 메인 게임 프레임OmokClient/NetworkHandler.java: 서버 메시지 수신/송신, 알림 처리OmokClient/BoardPanel.java: 오목판 렌더링, 입력 처리, 게임 종료 다이얼로그OmokClient/ChatWindow.java: 채팅 UIrecord.txt: 서버가 저장하는 경기 기록users.db: 계정 정보 저장 파일(텍스트,username:hash)
- Java JDK 8 이상
- Windows PowerShell 기준 명령 예시(다른 OS도 동일 명령으로 실행 가능)
프로젝트 루트(README가 있는 위치)에서 실행합니다.
javac -d out OmokServer\*.java OmokClient\*.javajava -cp out OmokServer- 기본 포트는
5000입니다. 이미 같은 포트에 다른 프로세스가 있다면 종료하거나 포트를 변경하세요.
java -cp out OmokClient- 로그인 창에서 서버 주소(기본
localhost), 아이디, 비밀번호를 입력합니다. - 회원가입 버튼: 새 계정 생성 후 즉시 로그인 시도
- 로그인 버튼: 기존 계정 인증
- 성공 시 메인 게임 창이 뜨고 자동으로 타이머/채팅/보드가 초기화됩니다.
- 두 명이 모두 로그인하면 서버가
START를 보내고 타이머를 시작합니다. - 마우스로 빈 칸을 클릭하면 서버에 이동을 전송하고, 서버가 승인하면 모든 클라이언트 보드가 갱신됩니다.
- 승패가 결정되면 서버가
WIN메시지를 보내고, 각 클라이언트의 다이얼로그에서 “다시하기/나가기”를 선택할 수 있습니다. - 한쪽이 “다시하기”를 누르면 상대에게 “○○님이 다시하기를 신청했습니다” 알림이 뜹니다.
- 상대도 “다시하기”를 누르면 새 게임을 시작합니다. 한 명이 나가면 대기 상태로 전환됩니다.
- 포트 점유 에러 (
Address already in use)
서버를 중복 실행했거나 기존 프로세스가 종료되지 않은 상태입니다. 이전 서버를 종료하고 다시 실행하세요. - 클라이언트가 “서버에 연결 중…”에서 멈춤
서버가 최신 빌드로 실행 중인지, 방화벽에서 포트 5000을 허용했는지 확인하세요. 과거 서버가 남아 있으면 종료 후 새 서버를 실행합니다. - 회원가입 실패
이미 존재하는 아이디인지 확인하고, 공백 없는 아이디/비밀번호를 사용하세요. - 타이머가 멈춤
두 명이 모두 접속해 있어야 타이머가 동작합니다. 한 명이 나가면WAITING알림과 함께 타이머가 정지합니다.
record.txt,users.db는 서버 실행 디렉터리에 생성됩니다.- GUI 글꼴/레이아웃은 기본 Swing 컴포넌트를 사용하며 필요 시 자유롭게 수정 가능합니다.
즐거운 오목 플레이 되세요!