Sha256: fefcb77d919af3a94534d26f819783be24b628cd985e102f4c68008a47370b93

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

require_relative "card.rb"
$deck = Deck.new(jokers: true).cards.shuffle!
class Hand # Creates an object that holds and can play cards. Interacts with Deck objects.
	@@deck = Deck.new.cards.shuffle!
    	attr_accessor :cards # @return [Array<CardDeck::Card>]
    	def initialize
		@cards = Array.new(3) {$deck.shift}
	end
	
# @param card [CardDeck::Card] the card played
# @return [void]
# @note Gameplay method
	def play(card)
		raise "Card not found" unless @cards.include? card 
		if card.num == "King"
			$value = 99
		elsif card.num == "Joker"
			$value = 0
		else
			$value += card.value
		end
		i, done = 0, false
		for index in @cards
			if index.num == card.num and not done
				discard = @cards[i]
				@cards.delete_at i
				@cards.push $deck.shift
				$deck.push discard
				done = true
				$deck.shuffle!
			end
			i += 1
		end
		card
	end
		
# @return [void]
# Displays cards
    	def view_cards
		print "These are your cards:  "
        	@cards.each {|card| print "#{card}  "}
    	end
    	alias inspect cards
# @return [Array<Integer>]
# @note Used by the CPU to determine which card to play. Parameter card needs to be an instance of Card.
	def test_outcomes
		outcomes = Array.new
		@cards.each do |card| 
			test_value = case card.num
			when "King"
				if (@cards - [card]).any? {|card| [4, 9, "Jack", "Queen", "King", "Joker"].include? card.num} || rand < 0.1 
					99
				else -1
				end
        		when "Joker" then 0
        		else
				$value + card.value
	    		end
	    		test_value = -1 if test_value > 99
			outcomes << test_value
		end
		return outcomes
    	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
99_game-4.0.3 lib/hand.rb