Next Previous Contents

5. Et større eksempel

Om du har hatt en Commodore 64, har du kanskje sett en variant av følgende spill i manualen. Målet er å gjette et tall med minst mulig forsøk, gitt litt tilbakemelding på hvor nær man gjettet.

  1| #!/usr/bin/env ruby 
  2| class Gjett  # Et lite spill 
  3|   def initialize
  4|     @max = 100
  5|     @min = 1
  6|     @forsoek = 0
  7|     @ferdig = false
  8|     @fasit_svar = ((@max-@min)*rand).to_i + @min
  9|   end
 10|   def spill
 11|     puts "\nGjettekonkurranse!"
 12|     while @forsoek < 10 and not @ferdig
 13|       gjett( hent_svar )
 14|     end
 15|   end
 16|   def gjett( svar )
 17|     diff = (svar - @fasit_svar).abs
 18|     if diff > 25
 19|       print "Mye "
 20|     elsif diff > 15  
 21|       print "Endel "
 22|     elsif diff > 0 
 23|       print "Litt "
 24|     end
 25|     if svar > @fasit_svar
 26|       puts "lavere. "
 27|     elsif svar < @fasit_svar
 28|       puts "høyere. "
 29|     end
 30|     if diff == 0
 31|       @ferdig = true
 32|       puts "Du klarte det på #@forsoek forsøk!"
 33|     end
 34|   end
 35|   def hent_svar
 36|     begin
 37|       print "Gjett ett tall mellom #@min og #@max >: "
 38|       svar_streng = gets.chomp
 39|       if svar_streng == "slutt"
 40|         puts "Ha det bra!"
 41|         exit
 42|       end
 43|       svar = svar_streng.to_i
 44|     end until svar >= @min and svar <= @max
 45|     @forsoek += 1
 46|     svar
 47|   end
 48| end 
 49| 
 50| if __FILE__ == $0 then
 51|   begin
 52|     g = Gjett.new
 53|     g.spill
 54|     print "Spille en gang til? [j/n]: "
 55|     svar = gets.downcase
 56|   end while svar[0] == "j"
 57| end


Next Previous Contents