Blackjack


how to think of this design from stratch?

casual thought: abstract cards /// how to play? //// what's the role in the game? ///what's the process of game?

game OOD thought path:

  • (static)游戏道具和游戏状态的描述
  • (dynamic)游戏规则和游戏流程

道具:

  • card (注意,这个时候不要引入游戏具体的规则)
  • deck(公共牌堆) 目前还不用考虑弃牌堆,只要考虑如果deck没有足够的牌,需要reset就好了
    • keep a list, store all the cards
    • keep a boolean array, index, left of which is used, right of which is not used,
    • set boolean array to the false, and shuffle the list.

游戏状态

  • 公共牌堆的剩余的牌
  • 每个玩家手里的牌,点数
  • 玩家

step 1:

  • Design a generic deck of cards

    • what kind of classes we need to define and
  • write the suit, card, deck class

  • for the deck class, there are some methods that we need to consider,

    • dealhand()
    • reset() -> shuffle()

step 2:

  • design hand (手里的牌)
    • List<Card> or Card[]
    • addCards(Card[] ) 抓牌
    • int getScore()
  • BlackJackHand extends Hand {...}
    • int getScore()...

step 3:

  • How to simulate the BlackJack game?
  • game status s1 -> rules + actions -> s2 -> check end ->continue;
    • shuttle
    • initialDeal
    • for (every hand) {
      • while (!checkhandend()) {
        • dealtHand()
      • }
      • // get the score for this player
    • declare winner

results matching ""

    No results matching ""