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)
(if (< value *guess*)
(format t "~a, ~a guesses so far ~%" "Too low"
(incf *no-guesses*))
(if (> value *guess*)
(format t "~a, ~a guesses so far ~%" "Too high"
(incf *no-guesses*))
(if (= value *guess*)
(format t "~a, you took ~a guesses ~%" "Well done" *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)