Giter Club home page Giter Club logo

swift-cardgame's Introduction

카드게임 요구사항

시작하기

  • 객체지향 프로그래밍 방식에 충실하게 카드 클래스(class)를 설계한다.
  • 속성으로 모양 4개 중에 하나, 숫자 1-13개 중에 하나를 가질 수 있다.
  • 모양이나 숫자도 적당한 데이터 구조로 표현한다. 클래스 혹은 Nested enum 타입으로 표현해도 된다.
  • 어떤 이유로 데이터 구조를 선택했는지 주석(comment)으로 구체적인 설명을 남긴다.
  • ex. //어떤 처리가 간단해서, 편리해서, 함께 표현하려고...
  • 카드 정보를 출력하기 위한 문자열을 반환하는 함수를 구현한다.
  • 문자열에서 1은 A로, 11은 J로, 12는 Q로, 13은 K로 출력한다.
  • main에서 특정한 카드 객체 인스턴스를 만들어서 출력한다.
♥️Q
♠️7

카드덱 구현

  • 모든 종류의 카드 객체 인스턴스를 포함하는 카드덱 구조체를 구현한다.
  • 객체지향 설계 방식에 맞도록 내부 속성을 모두 감추고 다음 인터페이스만 보이도록 구현한다.
  • count(): 갖고 있는 카드 개수를 반환한다.
  • shuffle(): 전체 카드를 랜덤하게 섞는다.
  • removeOne(): 카드 인스턴스 중에 하나를 반환하고 목록에서 삭제한다.
  • reset(): 처음처럼 모든 카드를 다시 채워넣는다.
  • 카드덱 기능을 확인할 수 있도록 메뉴를 만들기 위해 InputView를 구현한다.
  • 사용자가 입력한 메뉴에 따라서 카드덱 구조체 함수를 호출하고 결과를 출력한다.
다음 메뉴를 선택해주세요.
1. 카드 초기화
2. 카드 섞기
3. 카드 하나 뽑기
> 1
카드 전체를 초기화했습니다. 
총 52장의 카드가 있습니다.


카드스택 출력

  • 카드덱에 카드 여러 장을 한꺼번에 배열로 뽑아내는 메서드를 추가한다.
  • 카드덱을 활용해서 다음 화면처럼 표시할 카드스택(쌓인 모양)을 출력하도록 수정한다.
  • 카드덱에 새로 추가한 메서드를 활용해서 카드스택 출력을 담당할 객체를 구현한다.
  • main에서 입력 기능을 잠시 제거하고, 바로 카드스택을 출력한다.
  • 클래스 이름, 변수 이름, 메서드 이름 작성 기준 :
    • 클래스 이름 : 게임 주체, 객체로 나누고 역할에 따라 이름 부여.
      • Dealer: 게임 주체. 카드덱과 카드스택을 통제하며 전반적인 게임 진행을 담당
      • Deck: 게임 객체. 전체 카드를 담고, 전체 카드를 조작하는 역할
      • CardStack: 게임 객체. 카드뭉치를 가지고 특정규칙(stack)에 따라서만 넣고 뺄 수 있음
      • Card: 게임 객체의 최소단위
      • Shape, Number: Card를 구성하는 규칙
    • 변수 이름 : 명사로 끝남. 타입명은 변수에 포함 안 하고 최대한 현실세계의 구체적인 단어 사용.
    • 메소드 이름 : 동사로 시작. 영어문장으로 읽힐 수 있도록 파라미터 라벨명에 전치사 사용.
  • 스위프트 코딩 컨벤션 :
    • Ray Wenderlich 사의 코딩 컨벤션 참고: raywenderlich
    • Enum cases들은 lowerCamelCase를 사용하는 등 현재 나의 코딩 스타일과 가장 비슷하며, 설명이 가장 자세하게 되어있음.

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.