Skip to content

[행성 로또] 오선정 미션 제출합니다#148

Open
sunJ0120 wants to merge 27 commits intowoowacourse-precourse:mainfrom
sunJ0120:sunJ0120
Open

[행성 로또] 오선정 미션 제출합니다#148
sunJ0120 wants to merge 27 commits intowoowacourse-precourse:mainfrom
sunJ0120:sunJ0120

Conversation

@sunJ0120
Copy link

@sunJ0120 sunJ0120 commented Jan 10, 2026

🎯 8기 최종 코딩 테스트 : 구현 기능 목록

기본 행성 로또

도메인

  • Lotto : 로또 단위 하나를 저장합니다.
  • Rank : 로또 순위와 함께, 순위별로 가지는 상금을 가집니다.
  • Stats : 각 로또 등수가 몇 개 있는지를 보기 위한 순위 통계입니다.
  • WinningLotto : 당첨 로또 번호입니다. lotto와 int (bonus)를 가집니다.

예외 처리

  • 로또 번호는 1~30 안에 있어야 한다.
  • 중복된 번호가 들어올 수 없다.

추가 기능

  • 도전 과제로 구현하려고 한 행운게임과 연관지어, Rank 안에 luckyScore 변수를 추가했습니다.
  • 이를 통해 보너스 번호 불일치로 아깝게 상금을 놓친 사람에게도 동일한 럭키 스코어를 지급하여, 유저 입장에서 좀더 행복도를 높일 수 있도록 기획해두었습니다.
  • 아쉽게도 럭키 스코어와 로또 - 행운 게임 기능을 잇는 것은 시간 관계상 진행 하지 못하였습니다.

💡 고민했던 부분

  • 이번에는 그동안과 다르게 input, outputview가 마련되어 있고, 그 상황에서 맞춰야 했기 때문에, service에서 뱉을 때 return 값을 그 상태와 맞춰서 구현하려고 노력했습니다.
  • test에서 exception이 발생하면, 그걸 한 번더 처리해야 하는 부분이 있었어서 이 부분 try-catch로 처리했습니다.

🏗️ 패키지 구조

├── controller
├── domain
├── repository
├── dto
├── service
└── view

🍀 도전 과제 - 행운 점수 게임

저는 항상 무언가를 만들고, 새로 배울때 하고 싶은 것을 무작정 시도해보고는 합니다.

오픈 미션을 통해 Rust라는 언어를 배우고, 이 언어의 쓰임새를 확장해보고 싶어서 Rudis를 만들었듯이

이번에도 lotto 프로젝트를 확장하여 lotto로 쌓은 나만의 행운 점수로 하는 게임을 만들어보고자 합니다.

최근에 저와 제 친구들은, 카카오톡의 검 키우기에 빠져 있습니다.
이 게임의 매력은, 검으로 벌어들인 돈으로 여러 랜덤 무기들을 뽑고, 결투를 통해 승률을 올리는 것입니다.
단순한 게임이지만 참 재밌어서 아직까지도 하는 중이고, 제 친구들도 이미 중독되어 버렸습니다.

😋 만약 로또를 사는것에서 끝나지 않고, 로또뽑기를 통해 얻은 행운점수로 게임을 할 수 있다면 어떨까요?

구현 완료 기능 정리

🌟 원래 view를 생성해서 제가 만든 기능으로 콘솔 전환할 수 있는 기능을 만들고 싶었는데, 이렇게 하니 기본 기능 테스트가 NoSuchArgumentException으>로 깨져서, 뷰 없이 기능들만 만들어 뒀습니다.

1. 내 프로필 확인 (완성, GameOutputView는 미완)

  • 유저가 행운점수 기능에 입장하면, 1번을 클릭하여 내 프로필을 볼 수 있습니다.
  • 각 유저들은 자신만의 행운 점수를 가지고 있습니다. (행운 점수는 로또 당첨을 통해 크게 얻을 수도 있고, 승률을 올리면 얻을 수 있습니다.)
  • 승률은 ENUM으로 관리하여 각 승률을 통해 얻을 수 있는 행운 점수를 내부에 포함하도록 합니다.

신경쓴 부분

enum 도메인 test 로직 작성

  • 현재 승,무,패를 관리하는 WinRate에는 승리, 패배 로직이 있습니다.
  • 이 로직의 경우, 각각 유저의 럭키 스코어를 수정해야 함과 동시에 WinRecord의 승,무,패 count도 수정해야 합니다.
  • 정합성이 유지되어야 하는 로직이므로, test code를 작성하여 검증하였습니다.

DTO 마련

  • 유저의 프로필을 조회하는 기능을 만들기 위해, 유저의 여러 정보와 무기의 정보, 승패의 정보를 가져와야 했습니다.
  • 해당 정보들을 outputView에서 더 쉽게 화면에 출력할 수 있도록 하기 위해 dto를 마련했습니다.

아쉬운점

  • 원체 메인 기능으로 구현하려고 했던 랭킹 조회와 대결 기능을 시간 관계상 구현하지 못한 것이 너무 아쉽습니다..
  • 럭키 스코어를 Rank에 도입한 시점이 너무 촉박한 시점이었어서, lotto에 연결하지 못하였습니다. lotto와 게임을 연동할 수 있었다면, 원하던 방향을 더 이룰 수 있었을 것 같아서 아쉽습니다.
  • 원래 이번에는 lotto에 test code를 좀 자세히 짜려고 기획했었는데, 추가 기능(행운 게임의 프로필 조회)을 구현하다보니 시간이 많이 지나서 테스트 코드를 구현하지 못한 것이 아쉽습니다.
  • 원래 로또가 끝난 후에 view에서 게임 진입을 안내하려고 했었는데, 이렇게 할 경우 기존 testcode가 오류가 나서 연동하지 못했습니다. 아쉽습니다ㅠ

1. enum으로 구성하여 캡슐화
2. 맞는 번호와 보너스 번호를 조합해서 등수를 구하는 로직 마련
feat: 행운 점수 게임 1차 기능 구현 완료
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments