[우테코] 우아한테크코스 모바일 안드로이드 6기 - 1주차 프리코스 (숫자 야구 게임)

[우테코] 우아한테크코스 모바일 안드로이드 6기 - 1주차 프리코스 (숫자 야구 게임)

[GitHub] AgileCatch - 레파지토리 바로가기 Click!

👩🏻‍💻 구현할 기능 목록

  1. 기본세팅, 게임 시작 문구 출력
  • “숫자 야구 게임을 시작합니다.” 출력 되는지 test 하기
  1. 3자리 서로 다른 수 랜덤 생성
  • 컴퓨터가 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 랜덤으로 선택
  • 랜덤으로 중복된 숫자가 없도록 예외처리하기
  1. 사용자 입력 받기
  • 사용자로부터 3자리의 서로 다른 수 입력 받기
  1. 입력 값 검증
  • 사용자 입력값이 중복된 숫자를 포함하고 있는지 확인
  • 사용자 입력값이 null 또는 3자리 숫자가 아닌 경우 확인
  • 아닐 경우 IllegalArgumentException 발생 및 애플리케이션 종료
  1. 스트라이크, 볼, 낫싱 계산
  • 사용자가 입력한 숫자와 컴퓨터가 선택한 숫자 비교하여 결과 계산
  • 같은 수가 같은 자리에 있으면 스트라이크
  • 다른 자리에 있으면 볼
  • 같은 수가 전혀 없으면 낫싱
  • 결과를 볼, 스트라이크 개수로 출력 (예: “1볼 1스트라이크”)
  • 3스트라이크인 경우 “3개의 숫자를 모두 맞히셨습니다! 게임 종료” 출력
  1. 게임 재시작 또는 종료
  • 게임이 종료된 후, 사용자에게 게임을 새로 시작할지 종료할지 입력 받기
  • 1을 입력하면 게임 재시작, 2를 입력하면 게임 종료
  1. test 돌려보고 수정하기
    • 3스트라이크일 경우 “3스트라이크” 문구 출력되도록 수정
  2. Code Refactoring
    • MVC 패턴을 적용하여 코드 구조 개선
    • 하나의 함수가 하나의 기능만 하도록 분리
    • 클래스가 어떤기능을 하는지 설명을 추가
    • 각 함수가 어떤기능을 하는 지 설명을 추가

👩🏻‍💻 아키첵터 “MVC” 적용

model :
GameRulesManager 는 게임의 규칙을 관리합니다.
컴퓨터가 선택한 숫자를 생성하고, 사용자가 제시한 숫자와 비교하여 결과를 반환합니다.
결과에 따라 스트라이크, 볼, 낫싱을 알려주며, 3스트라이크일 때 게임의 종료 여부를 알려줍니다.
view :
GameView 클래스는 게임의 화면 표시와 관련된 역할을 합니다.
게임 시작 메시지를 출력하고, 사용자로부터 숫자를 입력 받습니다. 그리고 게임 결과를 표시하며, 게임이 종료될 때 종료 메시지를 출력합니다.
 */
Controller :
GameController 는 게임의 진행을 관리하며, 사용자 입력과 모델 간의 상호작용을 중계합니다.
게임 시작 메시지를 출력하고, 게임 라운드를 반복하여 진행하며, 3스트라이크를 달성하면 게임 재시작 여부를 물어봅니다.
게임이 종료되면 종료 메시지를 출력합니다.

🫱🏻‍🫲🏼 커밋 메세지 컨벤션

TagDescription
[new] :First commit
[feat] :새로운 기능을 추가
[fix] :버그 수정
[design] :CSS 등 사용자 UI 디자인 변경
[comment] :문서 수정, 필요한 주석 추가 및 변경
[test] :테스트 코드, 리팩토링 테스트 코드 추가
[refactor] :코드 리팩토링
[rename] :파일 또는 폴더 명을 수정하거나 옮기는 작업만인 경우
[docs] :문서를 추가하고 READEME.md 를 작성한 경우
  • 한 커밋에는 한 가지 문제만!
  • 제목은 영문 기준 50자 이내로 할 것
  • 제목과 본문을 빈행으로 분리
    • 커밋 유형 이후 제목과 본문은 한글로 작성하여 내용이 잘 전달될 수 있도록 할 것
    • 본문에는 변경한 내용과 이유 설명 (어떻게보다는 무엇 & 왜를 설명)
  • 자신의 코드가 직관적으로 바로 파악할 수 있다고 생각하지 말자
  • 여러가지 항목이 있다면 글머리 기호를 통해 가독성 높이기

⚙️ 코드 컨벤션

  • 문자열을 처리할 때는 쌍따옴표를 사용하기
  • 함수명, 변수명은 카멜케이스로 작성하기 (camelCase)
  • 가독성을 위해 한 줄에 하나의 문장만 작성하기.
  • 코드 구현 완료 후 정렬하기 (ctrl + Alt + L), (command + option + L)
  • 생성자 함수명의 맨 앞글자는 대문자로 하기

💬 네이밍 컨벤션

  • 클래스 구현 후 주석 달아주기

    -> 클래스 상단
    /*
     * 작성자 이름
     * MyPage 데이터 관리를 위한 ViewModel
     * 비즈니스 로직 캡슐화
     * UI에 사용될 상태를 처리, UI Layer에 상채를 알림
     */
    
  • Class 이름은PascalCase 로 작성할 수 있도록 하기

  • 단어를 축약해 사용하지 않기 (팀 내에서 축약하기로 약속한 경우는 제외)
  • Class는 파스칼 case / Function, var, val 은 카멜케이스로 네이밍

© 2023. All rights reserved.

AgileCatch