- 2024 한성대학교 네트워크 프로그래밍 기말 프로젝트 대비 작업
- 기존 v1.0.0의 코드 가독성 및 규칙 수립
- 싱글톤(singleton)과 상태패턴(state)을 적용하고 적용해봄
- 고전 오락 PuyoPuyo 게임 제작하기
- 멀티 유저 게임을 제작하여, 배틀 기능 구현
- 게임 규칙은 Sega의 PuyoPuyo Tetris을 기반으로 제작 PuyoPuyo_by_Java 리뉴얼
- 동작 알고리즘은 모두 해당 프로젝트에서 직접 제작
- 이후
v3.0.0(네트워크 통신)을 위해 플레이어 동작 모듈화
- 클래스 다이어그램
- 영상 링크
- 실행파일 링크 ※
Java Virtual Machine설치 필수 ※ - git clone 후
IntelliJ에서 프로젝트 실행
- 화면 생성(그래픽스): Java Swing을 이용한 그래픽 디자인
- Ui 디자인:
PuyoPuyo Tetris의 이미지 참고, 메뉴 배치는 자체 디자인. ※ 저작권 위배 시 원격 깃 private로 변경 예정 - 알고리즘:
- 게임 진행:
- 게임 시작 시 각 Round를 담당하는
GameThread를 배치, 각 라운드는 Player마다 새로운RoundThread를 가진다. - 게임 이벤트는
RoundThread의 메서드에서 관리되며, 상대 puyopuyo.Player 데이터 접근은RoundThread를 통해서 전달된다. RoundThread의 시각적인 부분은GroundService를 통해서만 접근이 가능하다. 상대방 Ui는RoundThread에서 MapService를 통해 접근된다.
※ 자세한 사항은 의존성 주입 에서 설명
- 게임 시작 시 각 Round를 담당하는
- 주변 뿌요 탐색:
Flood Fill알고리즘- 6*12 사이즈의 이중 배열 화면과 픽셀 영역 채우기에 사용하는
Flood Fill알고리즘의 작동 방식이 유사하다 판단 - 최하단까지 내려운 뿌요의 4면에 자신과 동일한 뿌요가 몇 개 있는지 판단한다. (알고리즘 1회 사용)
- 동일한 뿌요가 4개 이상 존재한다면, 뿌요 삭제 함수를 작동한다. (알고리즘 추가 1회 사용) <- 수정 예정
- 6*12 사이즈의 이중 배열 화면과 픽셀 영역 채우기에 사용하는
- 졈수 계산:
- 다음 사이트를 참고하여 제작하였다. 득점 계산
- player
dropPuyos()가 작동된 횟수를 Combo로 판단한다.
- 게임 진행:
- 자바 Swing 이용
- 이미지...
- 해당 없음
- [PuyoPuyo_by_Java] v1.0.0
Eclips에서 작동하는 버전 (프로토타입) - [PuyoPuyo_by_Java] v2.0.0
IntelliJ에서 작동하는 버전 (2인용) 현재 버전 - [PuyoPuyo_by_Java] v3.0.0
IntelliJ에서 작동하는 버전 (네트워크 통신 적용)
Java Virtual Machine