All pastes #92198 Raw Edit

Miscellany

public text v1 · immutable
#92198 ·published 2006-07-19 09:51 UTC
rendered paste body
(defparameter *rand-max* 100)

(defparameter *guess* (random *rand-max*))

(defparameter *no-guesses* 0)

(defparameter *finished* 0)

(defun reset-guess()
  (setf *guess* (random *rand-max*)))

(defun high-low(value)
  (when (< value *guess*)
    (format t "Too low, ~a guesses so far ~%" (incf *no-guesses*)))
  (when (> value *guess*)
    (format t "Too High, ~a guesses so far ~%" (incf *no-guesses*)))
  (when (= value *guess*)
    (format t "Well done, you took ~a guesses ~%" *no-guesses*
      (setf *no-guesses* 0)
      (reset-guess)
      (setf *finished* 1))))

(defun prompt-read (prompt)
  (format *query-io* "~&~a:" prompt)
  (force-output *query-io*)
  (read-line *query-io*))

(defun read-guess()
  (or (parse-integer (prompt-read "Guess") :junk-allowed t) 0))

(defun play-game ()
  (loop (high-low (read-guess))
        (when (= *finished* 1)
          (setf *finished* 0)
          (if (not (y-or-n-p "Another game? [y/n]: "))
              (return)))))

(play-game)