From: Smgspices@... Date: 2006-11-17T06:57:46+09:00 Subject: Beginner Needs Help -------------------------------1163714257 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit I am new to Ruby and OOP although I have written programs in Forth; another world. As a learning project, I decided to duplicate something I had written in Forth; namely a bridge hand dealer. I originally stored the hands in a 3-dimensional binary array (hand, suit, cards). In cards, a set bit represented a particular card. I like the binary representation because it makes things like searching for pairs or sequences, etc. easy with bit logic. Here is what I have written so far: class Carddeck attr_writer :deck def initialize @deck=Array.new end def build_deck 0.upto(51) {|i| @deck.push(i.divmod(13))} # deck consists of 52 2-member arrays, [suit, rank], # each representing a playing card. In use, the first # 13 members is hand[0] and the next 13 are hand[1], etc. # hand will be defined in a subclass. return @deck end def shuffle_deck @deck=@deck.sort_by{rand} end end class Bridgehands < Carddeck attr_writer :hands attr_reader :deck def initialize super @hands = Array.new(4) {|idx| Array.new(4)} # hands is a 4 by 4 array for player,suit end def build_hands self.shuffle_deck 0.upto(51) {|i| @hands[i/13][@deck[i][0]] += 0b1 << @deck[i][1]} # The left side addresses a particular cell in hands. # The right side converts the card rank to a bit shifted # to the position represented by the rank of the card. # We cycle through the entire deck and let i/13 = the hand. return @hands end end Carddeck works just fine but Bridgehands returns an error when I enter: bh = Bridgehands.new followed by bh.build_deck and then bh.build_hands. to which it responds: NoMethodError: undefined method `+' for nil:NilClass from (irb):92:in `build_hands' from (irb):92:in `build_hands' from (irb):103 from :0 I'm going nuts. Charles Gray -- Phoenix, AZ ... skype and google-talk user name: tcykgreis -------------------------------1163714257--