Giter Club home page Giter Club logo

java-baseball-playground's Introduction

11/24 14:15 - 17:31 11/25 15:48 - 17:45

기능 요구 사항

  • 개요

숫자 야구 게임 구현

  • 요구사항
  1. 사용자가 서로다른 1부터 9까지 숫자 3개를 입력
  2. 컴퓨터의 숫자에 따라 힌트를 출력
    1. 같은 숫자 같은 자리 - 스트라이크
    2. 같은 숫자 다른 자리 - 볼
    3. 다른 숫자 다른 자리 - 낫싱
  3. 3개의 숫자를 모두 맞힐 시 게임종료
  4. 게임 종료후 게임을 다시 시작하거나 완전히 종료할 수 있다.

주체 정하기

  • 랜덤 숫자를 만드는 자
    • 랜덤성이기에 가장 첫 단에서 관리할 수 있도록 만든다.
  • 숫자를 관리하고 유저의 숫자를 비교하는 자 (생성은 랜덤 숫자를 만드는 자에게 받음)
    • 랜덤 숫자를 만드는 자에게 주입을 받는다.
  • 힌트를 관리하는 자
    • 숫자를 관리하는 자에 의해 생성된다.
  • 콘솔의 입출력을 관리하는 자 (View -> InputView, OutputView)
    • 도메인과 무관하게 작동한다.
  • 게임 전체의 흐름을 관리하는 자 (게임 종료 후 게임을 다시시작 or 완전히 종료)
    • 도메인과 뷰의 연결다리 역할

구현

  • 랜덤 숫자를 만드는 자

    • RandomListGeneratorImpl (구현체)
      • 1 부터 9 까지 생성
      • 3 개 생성
      • (유효성) 중복
  • 정답 숫자를 관리하는 자

    • NumberManager
      • 생성은 RandomListGenerator를 통해 생성자 주입을 받는다.
      • 해당 리스트와 비교하여 HintManger를 발행한다.
    • calculateHint
      • HintManager 객체 생성
      • userNumber와 NumberManager가 가지고 있는 numbers 와 비교
      • HintManager 갱신
      • HintManager 반환
  • Hint를 담고있는 자

    • HintManager
      • Ball, Strike 초기화
    • update Strike,Ball
      • 스트라이크
    • checkCorrect
      • hintData의 STRIKE의 갯수가 3 개인가
    • makeLiteral
      • 일급 컬렉션의 리터럴 값 생성
  • 입력 View

    • readNumber
      • 숫자인가
      • 3자리 숫자인가
      • 1부터 9까지의 숫자로만 이루어져있는가
      • 중복된 숫자가 없는가
    • readRestart
      • 숫자인가
      • 1 또는 2 인가
  • 게임 흐름을 관리하는 자

    • BaseBallGameManager
      • 게임 시작하기
        • '숫자 야구 게임을 시작합니다.' 출력하기
      • 게임 플레이
        • '숫자를 입력해주세요 : ' 출력하기
        • 숫자 입력받기
        • 받은 입력 정답숫자관리자에게 메시지를 보내 힌트 메니저 받기
        • 힌트 매니저에게 데이터를 받아서 View에서 출력하기
        • 힌트 매니저에게 3스트라이크인지 확인하기
          • 정답 탈출
          • 오답 루프
      • 정답 이후
        • 정답 숫자 갱신
        • '3개의 숫자를 모두 맞히셨습니다! 게임종료' 출력하기
        • '게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.' 출력하기
        • 입력받기
        • restart 갱신하기
      • 다시 시작
        • 인스턴스 변수 확인

  • 저장할 필요가 없는 데이터에 대해서는 객체를 만들지 않아야 한다.

java-baseball-playground's People

Contributors

i-jdk avatar javajigi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.