Ruby Poker has been updated! This release is largely a result of bug reports filed by Jim W. He took ruby poker to areas I had not previously thought to explore and he ran into a couple nasty bugs. They have all been fixed in Ruby-Poker 0.3.0. In addition the following changes were made that users should be aware of.
Tag Archives: ruby-poker
Ruby-Poker 0.2.4
I just pushed out another release of the ruby-poker gem. The only change in this release is some code changes to achieve compatibility with Ruby 1.9.
Initially I had thought that I would not need to change anything for 1.9 because ruby-poker-0.2.2 installed and ran through some quick examples without any trouble. However, I was saved by my test suite when it quickly exposed a problem where I was calling each on a String object. The each method was removed from String in 1.9 so I made a quick change to work around it and once again I’m seeing nothing but dots.

Ruby-Poker 0.2.1
Ruby-Poker 0.2.1 is an incremental update over the 0.2.0 release. The biggest change is the addition of the << and delete methods to the PokerHand object. Making it possible to add and remove cards from a hand without creating a new PokerHand object.
require 'rubygems' require 'ruby-poker' hand.PokerHand.new("3d 3s 7h 7d") hand.to_s # => "3d 3s 7h 7d (Two pair)" hand << "7c" hand.to_s # => "3d 3s 7h 7d 7c (Full house)" hand.delete("3d") hand.delete("3s") hand.to_s # => 7h 7d 7c (Three of a kind)" |
I’m always in the process of adding documentation to ruby-poker. At this point the majority of the public facing methods of the PokerHand and Card classes have been documented with examples. The ruby-docs are available online at http://rubypoker.rubyforge.org/.
What’s New in Ruby-Poker 0.2.0
Yesterday ruby-poker 0.2.0 was released. Here is a synopsis of what has changed.
Hands are no longer limited to 5 cards!
In order to play any poker game other than 5-card draw (like Texas Holdem) you need to evaluate hands containing more or less than 5 cards. Now you can with ruby-poker.
holdem_hand = PokerHand.new("Qc Qd Qs 5d 5h 8c 2h") # Any number of cards you want |
HOWTO: Use Ruby-Poker
First install ruby-poker:
gem install ruby-poker |
Create a PokerHand object using the cards in your hand. PokerHand takes either an array of the cards or a string with a space between each card.
hand1 = PokerHand.new("8H 9C TC JD QH") hand2 = PokerHand.new(["3D", "3C", "3S", "13D", "14H"]) |
hand1 was instantiated using a string and hand2 was created with an array. The format for entering cards is ValueSuit where value is the numerical value of the card and Suit is the first letter of the card’s suit: Hearts = “H”, Spades = “S”, Clubs = “C”, Diamonds = “D”. For face cards you can use the first letter of its name or the card’s equivalent numerical value.
Ten = T or 10
Jack = J or 11
Queen = Q or 12
King = K or 13
Ace = A or 14
As of ruby-poker 0.2.0 face cards can only be created using letters.
Now that we have created our PokerHands we can find out what their rank is.
puts hand1.rank #=> Straight puts hand2.rank #=> Three of a kind |
Or compare the hands to see which one has a higher rank.
puts hand1 > hand2 #=> true |
That covers the basic operations. As a bonus tip, if you want to compare more than two hands you can place them in an array and call Array#sort. After sorting, the last hand in the array is the winning hand.
hand3 = PokerHand.new("2H 4C 6D 8S TS") puts hand3.rank #=> High Card puts [hand1, hand2, hand3].sort.last #=> 8h 9c Tc Jd Qh (Straight) |
Edited 01/21/08: Updated for ruby-poker 0.2.0