Code Monkey home page Code Monkey logo

java-baseball's Introduction

숫자 야구 게임

"우아한테크캠프 Pro" 프리코스 과제

목차

  1. 게임 방식과 규칙
  2. 게임 기능 목록
  3. 게임 실행 예시

게임 방식과 규칙

기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다.

같은 수가 같은 자리에 있으면 스트라이크,
다른 자리에 있으면 볼,
같은 수가 전혀 없으면 포 볼 또는 낫싱이란 힌트를 얻고,
그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다.

[예시]
상대방(컴퓨터)의 수가 425일 때,

  • 123을 제시한 경우: 1 스트라이크
  • 456을 제시한 경우: 1 스트라이크 1볼
  • 789를 제시한 경우: 낫싱

위 "숫자 야구 게임"에서 상대방의 역할을 컴퓨터가 한다.
컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다.
게임 플레이어는 컴퓨터가 생각하고 있는 3개의 숫자를 입력하고,
컴퓨터는 입력한 숫자에 대한 결과를 출력한다.

이 같은 과정을 반복해 컴퓨터가 선택한 3개의 숫자를 모두 맞히면 게임이 종료된다.

게임을 종료한 후 게임을 다시 시작하거나 완전히 종료할 수 있다.

게임 기능 목록

: 기능 목록의 카테고리는 다음과 같이 구성된다.

  1. 게임에 사용할 공 Ball
  2. 게임 1회 정보를 가진 Inning
  3. 게임을 즐기는 Player
  4. Player 상대가 되는 Computer
  5. 게임 입출력을 담당하는 Console
  6. 게임 애플리케이션 로직을 담당하는 NumberBaseball
  7. 게임 애플리케이션을 실행시킬 Application
  • 로 개별 기능이 표시된다.

  • Ball

    • 야구게임에서 사용할 Ball 생성
      • 1개의 공은 구질 숫자 Number를 가진다.
      • Number에 위한 숫자는 1에서 9까지 숫자로 구성된다.
  • Inning

    • 야구게임 1회를 구성하는 정보를 가진 Inning 생성
      • 사용되는 Ball은 3개이다.
      • 3개의 Ball은 중복되지 않은 숫자로 구성된다.
  • Player

    • 야구게임을 즐기는 Player 생성
      • 게임 1회 정보를 가진 Inning을 가진다.
  • Computer

    • Player를 상대할 Computer 생성
      • Player를 상대하기 위한 Inning 정보를 가진다.
      • Inning 정보는 야구게임이 새로 시작할 때마다 무작위로 생성된다.
      • Inning 정보 안 Ball들의 Number는 무작위로 할당된다.
  • Console

    • Input
      • PlayerComputer와 야구게임을 진행하기 위한 3자리 수 입력
      • PlayerComputer와 숫자 야구 게임을 새로 시작하거나, 종료할 수 있는 입력
        • 게임을 새로 시작하려면 1을 입력받는다.
        • 게임을 종료하려면 2을 입력받는다.
    • Output
      • PlayerComputer의 게임에서 Inning 매칭 결과 출력
        • 3개 Ball이 모두 매칭 되지 않은 경우, "낫싱"을 출력한다.
        • 3개 Ball이 부분 매칭 된 경우, ex) "1 스트라이크 1볼"을 출력한다.
        • 3개 Ball이 모두 매칭 된 경우, "3개의 숫자를 모두 맞히셨습니다! 게임 종료"를 출력한다.
  • NumberBaseball

    • 하나의 Inning에서 Player의 스트라이크 갯수 반환
      • PlayerInning 정보를 가지고 있어야 한다.
      • PlayerInning 정보를 가지고 있으면 'ACTIVE', 없으면 'INACTIVE' 상태를 가진다.
      • Player 상태는 'ACTIVE'가 되어야 한다.
    • 하나의 Inning에서 Player의 볼 갯수 반환
      • PlayerInning 정보를 가지고 있어야 한다.
      • PlayerInning 정보를 가지고 있으면 'ACTIVE', 없으면 'INACTIVE' 상태를 가진다.
      • Player 상태는 'ACTIVE'가 되어야 한다.
    • 숫자야구게임 실행을 위한 NumberBaseball 실행 메서드
      • (1) PlayerInning 입력한다.
      • (2) ComputerPlayerInning을 매칭한다.
      • (3) Inning을 매칭한 결과를 출력한다. 매칭된 경우 (4)으로 넘어가고, 아닌 경우는 (1)로 다시 간다.
      • (4) 게임을 다시 할 지(NEW), 종료할 지(QUIT) 결정한다. 'NEW'이면, (1)으로 간다. 'QUIT'이면, 애플리케이션 종료한다.
  • Application

    • 숫자야구게임을 시작하기 위한 NumberBaseball 실행

게임 실행 예시

숫자를 입력해주세요:123
1스트라이크 1볼
숫자를 입력해주세요:145
1볼
숫자를 입력해주세요:671
2볼
숫자를 입력해주세요:216
1스트라이크
숫자를 입력해주세요:713
3스트라이크
3개의 숫자를 모두 맞히셨습니다! 게임종료
게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.
1
숫자를 입력해주세요:123
1스트라이크 1볼

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.