PlayingCards

Tags: GameOfPlayingCard
Categories: ゲーム開発

概容

本記事ではGamesOfPlayingCardsのトランプ(PlayingCard)についの話をします。

リポジトリ

https://github.com/sh-lab/GamesOfPlayingCards/tree/master/PlayingCards

設計の話

完成形-トランプのカードは54種類の値

GamesOfPlayingCardsで扱うトランプのカードは54種類の一意な値を持つバリューオブジェクトとして定義しています。

内訳は

  • スートが4パターン(スペード,ハート,ダイアモンド,クローバー)に
  • ランクが13パターン(Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King)

の4×13=52種類に * ジョーカーが二種類(ジョーカー,エクストラジョーカー)

の計54種類としています。

また、ジョーカーとエクストラジョーカーのスートとランクは「None(なし)」として定義しています。

完成形までの経緯

初期の設計

初期の設計ではカードはスートが5パターン(スペード,ハート,ダイアモンド,クローバー,ジョーカー)とランクが15パターン(Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King,ジョーカー,エクストラジョーカー)から構成する値として定義していました。

迷走-カードの表と裏

Golfを作成していく中でPlayingCardsも迷走していきました。

カードの表と裏も必要だと考えた時に

  • カードに表と裏の属性を追加
  • スートとランクの定義
    • スートは6パターン(スペード,ハート,ダイアモンド,クローバー,不明,適用不能)
    • ランクが15パターン(Ace,2,3,4,5,6,7,8,9,10,Jack,Queen,King,不明,適用不能)

※適用不能はジョーカー用,不明はカードが裏の時用

と迷走していきました。

カードの表と裏を決めるのは

迷走していく中でふと気が付きました、「カードの表と裏を決めるのはカードではない」と「カードの表と裏を決めるのはそのゲームをプレイする人」だということでカードの表と裏を扱う部分はバッサリ切り捨てました。

トランプ(PlayingCard)のゲームは「カードの位置をルールに沿って変更するゲーム」

そして、「GameOfPlayingCard」の設計思想でトランプ(PlayingCard)のゲームは「カードの位置をルールに沿って変更するゲーム」と考えた時にトランプ(PlayingCard)は一意な値を持つバリューオブジェクトだと考え今の設計に行き着きました。