class CRAPSGAME # class variables start with a double "@" @@standings = 0 def displayHeading puts "CRAPS".center(80) puts "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY".center(80) puts "\n\n\n" puts "2,3,12 are losers" puts "4,5,6,8,9,10 are points" puts "7,11 are natural winners.\n\n" end def displayStanding if @@standings < 0 print "you are in the hole by " elsif @@standings == 0 print "you currently have " else # show how much money we currently have print "you now have won " end # print the absolute value of the amount in the standings puts @@standings.abs.to_s + " dollars" end # dice can come up 2 through 12 # so return a minimum of 2 and add 0 through 10 to that def rollDice puts "I will now throw the dice" return rand(5) + rand(5) + 2 end def placeBet print "How much do you want to wager? " wager = gets.strip.to_i return wager end def loseBetBy amount @@standings -= amount end def winBetBy amount @@standings += amount end def askQuit? print "\nDo you want to play again? " # just the first character, make it uppercase again = gets.strip.upcase[0] return again != "Y" end def pointRoll point, wager while true do puts " is the point." puts " I will roll again when you press Enter." waitForIt = gets roll = rollDice print roll.to_s # the only critical rolls here are 7 and the previous roll # if anything else comes up we roll again. case roll.to_i when 7 puts " craps - you lose" loseBetBy wager break when point puts " is a winner! congrats!" puts "at 2 to 1 odds pays you " + (2 * wager).to_s + " dollars" winBetBy 2 * wager break else print " no point - " + point.to_s end end end def play displayHeading while true do wagerAmount = placeBet roll = rollDice print roll.to_s case roll when 2 puts " snake eyes - you lose" loseBetBy wagerAmount when 3, 12 puts " craps - you lose" loseBetBy wagerAmount when 4, 5, 6, 8, 9, 10 pointRoll roll, wagerAmount when 7, 11 puts " a natural - a winner" puts "pays even money: " + wagerAmount.to_s + " dollars" winBetBy wagerAmount end displayStanding if askQuit? endPlay end end end def endPlay case when @@standings < 0 puts "Too bad. You are in the hole " + @@standings.abs.to_s + " dollars. Come again." when @@standings > 0 puts "Congratulations --- You came out a winner of " + @@standings.to_s + " dollars. Come again!" when @@standings == 0 puts "Congratulations --- You came out even, not bad for an amateur" end exit end end craps = CRAPSGAME.new craps.play