Next Previous Contents

5. Et større eksempel

Spill stjålet fra manualen til Commodore 64. Målet er å gjette et tall med minst mulig forsøk.

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


Next Previous Contents