Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Secret
- def initialize
- @secret = Kernel.rand(100).to_i + 1
- end
- def correct?
- @entered.to_i == @secret
- end
- def integer?
- @entered.match(/^\d+$/)
- end
- def entered=(value)
- @entered = value
- end
- def to_s
- @secret
- end
- def hint
- @entered.to_i > @secret ? "Je gokte te hoog." : "Je gokte te laag."
- end
- end
- class GuessProcedure
- @@times_played = 0
- def self.start
- @@times_played += 1
- if @@times_played == 1
- puts "Welkom bij de getallenrader!"
- else
- puts "Dit doe je nu voor de #{@@times_played}e keer!"
- end
- procedure
- end
- def self.procedure
- print "Raad een getal tussen de 0 en 100, of typ iets anders in om te stoppen: "
- procedure = self.new(Secret.new)
- procedure.display(procedure.guess)
- try_again? ? start : puts("Tot ziens!")
- end
- def self.try_again?
- print "Nog een keer spelen? [yN]: "
- gets.strip.downcase == 'y'
- end
- def initialize(secret)
- @secret = secret
- @tries = 0
- end
- def guess
- @tries += 1
- @secret.entered = gets
- return :failed unless @secret.integer?
- return :correct if @secret.correct?
- puts @secret.hint
- print "Probeer opnieuw: "
- guess
- end
- def display(message)
- puts send(message)
- end
- def correct
- "Gefeliciteerd! Je had het goed! En dat in maar #{@tries} pogingen!"
- end
- def failed
- "Je hebt het opgegeven. Het antwoord was #{@secret.to_s}."
- end
- end
- GuessProcedure.start
Add Comment
Please, Sign In to add comment