All pastes #92194 Raw Edit

High low game

public text v1 · immutable
#92194 ·published 2006-07-19 09:39 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)
	(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)