Giter Site home page Giter Site logo

java-ladder's Introduction

🪜 사다리 게임 미션 페어 프로그래밍

Pair: 져니 ⛄️, 후추 😎

✔️ 기능 요구사항

  • 참여자

    • 참여자 이름
      • 참여자의 이름은 최소 1글자부터 최대 5글자이다.
      • 참여자 이름에 공백이 포함될 수 없다.
    • 참여자 순서
      • 입력받은 참여자의 순서를 관리한다.
    • 참여자들
      • 참여자 이름 입력 시 쉼표를 기준(,)으로 구분한다.
      • 참여자 이름 앞뒤의 공백을 제거한다.
      • 참여자 이름은 비어있을 수 없다.
      • 참여자 이름은 중복이 허용되지 않는다.
      • 참여자는 최소 2명 이상부터 가능하다.
      • 결과 출력 참여자로 ‘all’을 입력받았다면, 전체 참여자 이름 리스트를 반환한다.
      • 결과 출력 참여자로 입력받은 참여자에 존재하는지 검증하고, 해당 참여자를 반환한다.
  • 사다리

    • 사다리에 대한 정보를 반환한다.
    • 입력받은 참가자의 순서에 맞게 사다리 타기를 진행한다.
      • 각 참가자의 첫 사다리 열 위치는 입력받은 참가자의 순서이다.
      • 각 열의 이전 위치와 다음 위치를 확인하여, 가로대가 존재하는지 체크한다.
      • 가로대가 존재한다면 다음 이동 시 해당 열로 이동하고, 아니라면 기존 열을 유지한다.
    • 사다리 높이만큼 이동했다면, 해당 참가자의 최종 사다리 결과 가로대 (열) 위치를 반환한다.
  • 사다리 생성기

    • 최대 사다리 높이를 입력받는다.
    • 최대 사다리의 높이는 정수값만 입력할 수 있다.
    • 최대 사다리 높이는 1 이상부터 10,000까지다.
    • 사다리 높이만큼 사다리 가로대를 만들어서, 사다리 객체를 생성한다.
  • 사다리 가로대들

    • 왼쪽 사다리 가로대가 존재하지 않으면, 사다리 가로대 생성기의 값을 사다리 가로대에게 전달한다.
    • 사다리의 가로 라인은 이어지지 않는다.
    • 대상 사다리 가로대가 존재 여부에 따라, 다음 행의 대상 가로대(열)로 이동이 가능한지 확인한다.
      • 대상 가로대의 범위가 벗어났다면 이동이 불가능하다.
      • 대상 가로대의 범위가 벗어나지 않았고, 가로대가 존재한다면 이동이 가능하다.
  • 사다리 가로대

    • 가로대를 생성할지에 대한 여부를 리턴한다.
  • 사다리 가로대 생성기

    • true 혹은 false의 값을 생성한다.
  • 사다리 결과

    • 사다리 결과는 쉼표(,)로 구분하여 입력받는다.
    • 사다리 결과의 수가 참여자의 수와 동일한지 검증한다.
    • 사다리 게임 진행 후 최종 위치를 입력받으면, 해당 위치에 존재하는 사다리 결과 이름을 반환한다.
  • 사다리 결과 이름

    • 사다리 결과 이름은 공백이 들어올 수 없다.
  • 출력

    • 사다리의 가로 라인의 폭은 5로 고정한다.
    • 사다리 출력 시 사람 이름, 생성된 사다리, 실행 결과 순으로 출력한다.
    • 결과를 보고 싶은 사람이 한 명의 사람이면 단일 결과를 출력한다.
    • 결과를 보고 싶은 사람이 전체 사용자라면 콜론(:)을 통해 이름과 결과를 구분하여 출력한다.
  • 💡추후 고려사항

    • 실행 결과 출력에 대한 종료 플래그를 입력받는다.
    • 여러 명의 이름을 쉼표(,)로 구분하여 입력받고, 실행 결과를 출력한다.
      • 전체 사용자의 실행 결과를 출력하는 것과 동일한 형식으로 출력한다.

✔️ 도메인 설계

  • 참여자
    • Participant
    • ParticipantName
    • ParticipantPosition
  • 참여자들
    • Participants
  • 사다리
    • Ladder
  • 사다리 생성기
    • LadderFactory
  • 사다리 가로대들
    • Rungs
  • 사다리 가로대
    • Rung
  • 사다리 가로대 생성기
    • RungGenerator
  • 사다리 결과
    • LadderResult
    • LadderResultName

✔️ 프로그래밍 요구사항

  • indent는 최대 1까지 허용한다.
  • 메서드의 길이는 최대 10라인까지 허용한다.
  • 모든 기능은 TDD로 구현한다. (UI 로직은 제외한다.)
  • 배열을 사용하지 않고 컬렉션을 사용한다.
  • 모든 원시값과 문자열을 포장한다.
  • Enum을 적용한다.
  • 줄여쓰지 않는다.
  • 일급 컬렉션을 적용한다.

java-ladder's People

Contributors

cl8d avatar pobiconan avatar woowahan-pjs 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.