Основная проблема заключается в том, что конечный автомат, вероятно, не принадлежит вашему классу CardGame
.Состояние игры лежит в другом месте.Я вижу четыре модели основных доменов:
A Game
будет иметь один или несколько Decks
(каждый из 52 Cards
) и один или несколько Hands
.(Возможно, вы даже захотите иметь класс Player
, где у игрока есть -1023 *, ваш звонок).
Например, Deck
, вероятно, будет иметь shuffle!
иdeal
метод.Hand
будет иметь метод play
.Вот где могла бы жить логика правила.
Класс Game
в основном будет состоять из цикла, такого как:
def run
deal
do
play_hands
check_for_winner
while(playing)
end
Более детально в деталях, конечно, но вы можетепосчитайте этот подход более освежающим и более легким для тестирования.