Ruby로 BlackJack-cli를 만든 소감.

큐타에서 이런 기사가 발견됐기 때문에 러비로 블랙잭을 만들어 봤다.
프로그래밍 입문자의 졸업 시험에서 블랙잭을 개발해야 한다

소감은 간단한 게임을 만들어서 너무 즐거웠어요.블랙잭을 만들어 봤는데 게임 외에도 많은 것을 할 수 있을 것 같아서 블랙잭 코드를 조금 더 바꾸고 다음에 뭘 할지 고민해보려고 한다.
모든 코드가 Giithub에 있으니 이쪽에서 확인할 수 있습니다
BlackJack Ruby | Ryutaro - Github

블랙잭의 규칙


블랙잭에 대한 규칙은 여기. 글에서 쓴 규칙을 기준으로 작성됐다.
  • 초기 카드 52장.당길 때 카드 중복 안 돼요
  • 유저와 대리판매상이 맞붙는다.유저는 집행자, 대리판매상은 자동집행
  • 집행을 시작할 때 유저와 대리판매상은 각각 두 장의 카드를 뽑는다.뽑은 카드가 화면에 나타난다.단, 대리판매상의 두 번째 카드는 식별할 수 없음
  • 이후 유저가 먼저 카드를 뽑습니다.플레이어 21 넘으면 터져 게임 종료
  • 유저는 매번 카드를 뽑을 때마다 다음 카드를 선택할 수 있습니다
  • 유저가 끝난 후 대리판매상은 계속해서 자신의 카드를 17이상 당겼다
  • 유저와 대리판매상이 경기를 끝냅니다.21자 승리에 더 가깝다
  • J 및 Q 및 K를 10으로 처리
  • A는 우선'1'으로만 처리한다.11
  • 로 설정하지 않음
  • 무쌍하강, 무분열, 무임대, 기타 특수 규칙 없음
  • 고민거리

  • 준비할 클래스
  • 실례적인 방법이나 유형적인 방법
  • 데이터를 어디에 저장해야 하는가
  • 준비반


    다음 여섯 개의 분류를 만들었습니다.
    각 반의 역할은 다음과 같다.
    # カードNumberとダイヤやハートなどのマークをそれぞれ配列で用意するクラス
    class Card
    
    # 用意したカードから山札を作成してシャッフルするクラス、Cardクラスを継承している
    class Deck < Card
    
    # プレイヤーとディーラーのスーパークラスでそれぞれの共通処理をするクラス
    class PlayerBase
    
    # プレイヤー専用の処理を作成している、PlayerBaseを継承している
    class Player < PlayerBase
    
    # ディーラー専用の処理を作成している、PlayerBaseを継承している
    class Dealer < PlayerBase
    
    # ゲームの進行に必要な処理や手札や山札などのデータを保持するクラス
    class BlackJack
    
    플레이어와 딜러가 공통적으로 다루는 방법이 많아 슈퍼레벨PlayerBase을 제작했고, 방법의 사용법도 쉬워졌다.

    Instance 메서드나 클래스 메서드를 사용해야 합니까?


    이것에 대해서도 고민이 많았습니다. 그래서 저는'루비 실례 방법 반 방법이 다르다'는 불평을 여러 번 했습니다.
    그 결과 "기본적으로 실례적인 방법으로 만들고, 조금 실례적인 방법으로 만들면 사용하기 어렵지 않을까? 그런 느낌이 드는 부분은 학급적인 방법으로 하자"는 약간 추상적인 판단으로 결정됐다.
    클래스 방법 예
    class Card
      class << self
        def numbers
          no = [1, 2, 3, 4, 5, 6, 7 ,8 ,9 ,10, 11, 12, 13]
        end
    
        def suit
          suit = ["ダイヤ", "ハート", "クラブ", "スペード"]
        end
      end
    end
    
    인스턴스 메서드 예
    class PlayerBase
    
      def create_hand(deck)
        deck.pop(2)
      end
    # .
    # .
    # .
    

    수패와 산패 등의 데이터는 어느 단계에서 유지해야 합니까


    내가 가장 고민하는 것은 데이터의 보관 장소다.애초 "플레이어의 손패니까 플레이어급, 딜러의 손패니까 데일러급으로 관리하자. 산패는 공통이니까 플레이어 베이스급이지"라고 생각했지만, 진행 과정에서 실례가 생성됐을 때 두 개의 산패를 만들어 번거로운 일이 많았다고 한다.BlackJack 클래스에 모든 데이터를 저장할 방침을 결정했습니다.

    상세 코드 설명


    나는 상세한 코드의 설명을 다시 따로 보도하고 싶다.이번에는 소감과 힘든 점을 썼다.

    좋은 웹페이지 즐겨찾기