Skip to content

The 3's 2 hand 2 card Blackjack

scottmills edited this page Apr 22, 2011 · 1 revision
class Deck
  
  attr_accessor :cards
  
  @@suits = ['C', 'D', 'H', 'S']
  @@values = [2,3,4,5,6,7,8,9,"t","j","q","k","a"]
  
  def initialize
    @cards = []
    @@suits.each do |suit|
      @@values.each do |value|
        @cards << suit + value.to_s
      end
    end
    shuffle
  end
  
  def shuffle
    @cards = @cards.sort_by{rand}
  end
  
  def deal
    @cards.pop
  end
  
end


class Hand

  attr_accessor :cards
  
  def initialize
    @cards = []
  end
  
  def add_a_card(card)
    @cards << card
  end

  def score
    value = 0
    aces = 0
    @cards.each do |card|
      if card[/\d/]
        value += card[/\d/].to_i
      end 
      if card[/[jkq]/]
        value += 10
      elsif card[/a/]
        aces += 1
        value += 11
      end
    end
    aces.times do
      if value > 21
        value -= 10
      end
    end
    value
  end
  
end

class Game
  
  def initialize
    @deck = Deck.new
    @player = Hand.new
    @dealer = Hand.new
  end
  
  def deal
    2.times do
      @player.add_a_card(@deck.deal)
      @dealer.add_a_card(@deck.deal)
    end
  end
  
  def show
    p @dealer
    p @player
    if @player.score > @dealer.score
      p "You win"
    else
      p "You lose"
    end
    p "Dealer: #{@dealer.score}  -  Player: #{@player.score}"
  end
  
end

game = Game.new
game.deal
game.show
Clone this wiki locally