def intro puts " DICE CREATIVE COMPUTING MORRISTOWN, NEW JERSEY THIS PROGRAM SIMULATES THE ROLLING OF A PAIR OF DICE. YOU ENTER THE NUMBER OF TIMES YOU WANT THE COMPUTER TO 'ROLL' THE DICE. WATCH OUT, VERY LARGE NUMBERS TAKE A LONG TIME. IN PARTICULAR, NUMBERS OVER 5000. " end def get_rolls while true number = gets.chomp return number.to_i if /^\d+$/.match(number) puts "!NUMBER EXPECTED - RETRY INPUT LINE" print "? " end end def dice_roll = rand(6) + 1 # ruby 3, woot! def print_rolls(rolls) values = Array.new(11, 0) (1..rolls).each { values[dice_roll + dice_roll - 2] += 1 } puts "\nTOTAL SPOTS NUMBER OF TIMES" (0..10).each { |k| puts " %-2d %-2d" % [k + 2, values[k]] } end def main intro loop do print "HOW MANY ROLLS? " rolls = get_rolls print_rolls(rolls) print "\n\nTRY AGAIN? " option = (gets || '').chomp.upcase break unless option == 'YES' puts end end trap "SIGINT" do puts; exit 130 end main