class Coin attr_reader :face, :value @@FaceRange = [0, 1] @@ValidValues = [1, 2, 5, 10, 20, 50, 100, 200] @@prng = Random.new # Pseudo-random Number Generator # Default Face to an illegal value so that it will flip the coin def initialize (value=10, face=-1) # CONSTRUCTOR self.value = value self.face = face end def face= (new_face) # Set a valid face @face ||= 0 # default if @@FaceRange.include? new_face @face = new_face else self.flip end end def value= (new_value) # Set a valid value @value ||= 1 # default @value = new_value if @@ValidValues.include? new_value end def set_face (new_face) # Set face to a chosen value @face = new_face if [0, 1].include? new_face end def turn # Turn the coin over @face = (@face + 1).modulo(2) end def flip # Flip the coin @face = @@prng.rand(0..1) end def to_s # Over-ride the to_s method inherited from the Object class "Value is #{@value} Face is #{@face}" end end coin1 = Coin.new(20, 1) puts coin1.face, coin1.value puts coin1 coin1.set_face(0) puts coin1 coin2 = Coin.new(50, 0) puts "Coin 2 is #{coin2}" coin2.set_face(0) puts "Coin 2 is #{coin2}" puts "Turn it" coin2.turn puts "Coin 2 is #{coin2}" puts "Turn it" coin2.turn puts "Coin 2 is #{coin2}" puts "Flip it" coin2.flip puts "Coin 2 is #{coin2}" puts "Flip it" coin2.flip puts "Coin 2 is #{coin2}" puts "Flip it" coin2.flip puts "Coin 2 is #{coin2}" puts "Turn it" coin2.turn puts "Coin 2 is #{coin2}" coin3 = Coin.new(5) puts "Coin 3 is #{coin3}" coin4 = Coin.new puts "Coin 4 is #{coin4}" puts "Flip it" coin4.flip puts "Coin 4 is #{coin4}" $ ruby coins2.rb 1 20 Value is 20 Face is 1 Value is 20 Face is 0 Coin 2 is Value is 50 Face is 0 Coin 2 is Value is 50 Face is 0 Turn it Coin 2 is Value is 50 Face is 1 Turn it Coin 2 is Value is 50 Face is 0 Flip it Coin 2 is Value is 50 Face is 1 Flip it Coin 2 is Value is 50 Face is 1 Flip it Coin 2 is Value is 50 Face is 1 Turn it Coin 2 is Value is 50 Face is 0 Coin 3 is Value is 5 Face is 1 Coin 4 is Value is 10 Face is 1 Flip it Coin 4 is Value is 10 Face is 0 tjinkers@TJINKERS-LAP ~/ruby $
Just somewhere to keep my notes while I'm playing.
Tuesday, July 12, 2016
Learning Ruby - First Object
Learning how to construct an object in Ruby, this is what I have so far.