미니 프로젝트 회고 🐡🐟🐠
프로젝트 구상
자바 프로그래밍을 배운 후, 곧바로 이어서 미니 프로젝트를 진행했다. 2024년 4월 11일부터 17일까지, 평일 5일간 아이디어 구상부터 기획, 설계, 개발, 발표까지 마쳤다.
Swing을 활용해서 간단하고 재밌는 게임을 구현하고자 했다.
정한 주제는 개복치 키우기 게임 제작하기!
학교에서 자바를 배운지도 오래되어 기억이 잘 안 났고, 자바로만 프로젝트를 진행해본 적이 없었기 때문에 잘 구현할 수 있을지 걱정되었다.
프로젝트 일정
1일차 (4.11목) : 프로젝트 주제 선정, 아키텍처 구조 설계 및 틀 구현
2일차 (4.12금) : Figma 각 화면 디자인, DAO 및 기능 명세서 작성, 역할 분담
3일차 (4.15월) : HomeScreen와 내부 요소 UI 작업, 백엔드 구현 (DAO, Controller, 객체)
4일차 (4.16화) : 세부 구현 진행 (각 요소에 이벤트 추가하여 개복치의 체중 연산 수행, 먹이 객체 생성, 미니게임 구현 등)
5일차 (4.17수) : 화면 간의 연동 마무리, 발표 자료 제작, 발표
구현 기능
기능은 크게 두 가지로 나눌 수 있다.
1. 개복치 몸무게 증가
- 개복치가 먹이를 먹으면 몸무게가 증가한다. (먹이의 종류: 조개, 불가사리, 꽃게, 새우, 문어 등)
- 미니게임을 성공하면, 몸무게가 증가한다.
- 일정 몸무게를 넘으면, 레벨 업한다.
2. 개복치 사망 조건
- 이상한 먹이(상한 것)를 먹었을 때 → 먹이 잘못 먹어서 사망
- 일정 시간 내에 기준치보다 많이 먹었을 때 → 과식해서 사망
- 일정 시간 내에 기준치보다 적게 먹었을 때 → 아사로 사망
- 사용자가 너무 만졌을 때(클릭했을 때) → 너무 만져서 사망
- 바닷물 온도가 너무 차갑거나 뜨거울 때 → 온도 안 맞아서 사망
- 미니게임에서 상어에게 물렸을 때 → 상어한테 물려서 사망
여러 사망 조건을 피해서, 개복치의 몸무게를 늘려야 하는 게임이다~!
맡은 역할
PM과 백엔드 로직 설계와 구현, 프론트엔드에서 개복치의 사망 조건을 추가했다.
백엔드 - Controller, DAO, 객체로 나눠 구현하였다. 백엔드 흐름을 이해하기가 어려웠지만 이를 간소화해서 구현했다.
프론트엔드 - 타이머를 설정하여, 개복치가 일정 시간 내에 먹이를 기준치 미만으로 먹거나, 초과하여 먹었을 때의 사망 조건을 구현하였다.
고민했던 것들
처음에 스프링 관점에서 백엔드 로직을 구현하고자 Controller, Service, DAO, DTO를 찾아보면서 공부했다. 그러나 아직 스프링을 배우지 않아 이해하기가 힘들었다. 또한 해당 프로젝트는 자바 프로젝트였기 때문에 스프링 구조를 그대로 가져가기 보다는, 더 간소화시켜서 구현하는 쪽을 택했다.
구현하면서 Controller의 중요성을 체감하게 되었다. 처음에는 어떤 기능까지 Controller에서 구현하고, 구현하지 않을지 그 기준을 명확히 나누는 것이 어려웠다. 개발을 진행하면서 점점 설계가 꼬이는 것을 느꼈다. 강사님께 질문을 하여 각 View마다 Controller가 존재하고, Controller끼리 소통해야 한다는 것을 깨달았다. 이를 통해 Spring의 중요성을 몸소 느낄 수 있었다 ..
개선할 점
리팩토링을 하지 못한 것이 아쉽다. 일단 기능을 모두 구현하는데 급급했기 때문에 더 나은 설계와 로직으로 바꾸지 못했다.
이 점을 추후 최종 프로젝트를 진행할 때 보완하고 싶다. 물론 많은 기능을 구현하는 것도 좋지만, 충분한 테스트와 리팩토링 과정을 거쳐 더 완성도 있고 안정성이 보장된 코드를 짜는 것이 중요한 것 같다!
그리고 Spring의 필요성을 절실히 느낀 만큼, 다음 세션을 열심히 들어서 최종 프로젝트에 적용해보고 싶다!