Next Previous Contents

6. Større eksempler

6.1 Gjettekonkurranse

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/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 = gets.to_i
 39|     end until svar >= @min and svar <= @max
 40|     @forsoek += 1
 41|     svar
 42|   end
 43| end 
 44| 
 45| # La oss unngå å bruke de kryptiske globale variabelnavnene.
 46| require 'English'
 47| if __FILE__ == $PROGRAM_NAME then
 48|   begin
 49|     g = Gjett.new
 50|     g.spill
 51|     print "Spille en gang til? [j/n]: "
 52|     svar = gets.downcase
 53|   end while svar[0] == ?j
 54| end


Next Previous Contents