Notes:
= Poker hand evaluator for Ruby
== Author
Robert Olson (rko618 [at] gmail [dot] com)
== License
This is free software; you can redistribute it and/or modify it under the
terms of the BSD license. See LICENSE for more details.
== Download
The latest version of <b>ruby poker</b> can be found at
http://rubyforge.org/frs/?group_id=5257
The homepage of this project is located at
http://rubyforge.org/projects/rubypoker
== Description
Ruby-Poker handles the logic for getting the rank of a poker hand. It can also be used
to compare two or more hands to determine which hand has the highest poker value.
Card representations can be passed to the PokerHand constructor as a string or an array.
Face cards (cards ten, jack, queen, king, and ace) are created using their
letter representation (T, J, Q, K, A).
== Examples
In this section some examples show what can be done with this class.
hand1 = PokerHand.new("8H 9C TC JD QH")
hand2 = PokerHand.new(["3D", "3C", "3S", "KD", "AH"])
puts hand1 => 8h 9c Tc Jd Qh (Straight)
puts hand1.just_cards => 8h 9c Tc Jd Qh
puts hand1.rank => Straight
puts hand2 => 3d 3c 3s Kd Ah (Three of a kind)
puts hand2.rank => Three of a kind
puts hand1 > hand2 => true
== Duplicates
By default ruby-poker will not raise an exception if you add the same card to a hand
twice. You can tell ruby-poker to not allow duplicates by doing the following
PokerHand.allow_duplicates = false
Place that line near the beginning of your program. The change is program wide so
once allow_duplicates is set to false, _all_ poker hands will raise an exception
if a duplicate card is added to the hand.
== Compatibility
Ruby-Poker is compatible with Ruby 1.8 and Ruby 1.9.
== Background
The original version of ruby-poker was written entirely by myself (Robert Olson).
As of the 0.2.0 release ruby-poker incorporates Patrick Hurley's Texas
Holdem code from http://rubyquiz.com/quiz24.html which I merged into ruby-poker.
Changes:
2008-05-17 (0.3.0)
* Changed Card#== to compare based on card suit and face value. Before it only compared the face value of two cards. Warning: This change may potentially break your program if you were comparing Card objects directly.
* Replaced `PokerHand#arranged_hand` with `PokerHand#sort_using_rank` which is more descriptive. This loosely corresponds to bug #20194.
* Bug [#20196] 'rank' goes into an infinite loop.
* Bug [#20195] Allows the same card to be entered into the hand.
* Bug [#20344] sort_using_rank does not return expected results
|