From 74bd1b761ad42c6b0b76bfce31cff501fd9d44c1 Mon Sep 17 00:00:00 2001 From: Xevion Date: Mon, 2 Mar 2020 00:35:53 -0600 Subject: [PATCH] mostly finished guess my number project --- GuessMyNumber/GuessMyNumber.lisp | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 GuessMyNumber/GuessMyNumber.lisp diff --git a/GuessMyNumber/GuessMyNumber.lisp b/GuessMyNumber/GuessMyNumber.lisp new file mode 100644 index 0000000..e934c45 --- /dev/null +++ b/GuessMyNumber/GuessMyNumber.lisp @@ -0,0 +1,47 @@ +(defparameter *small* 1) +(defparameter *big* 100) + + +(defun start-over () + (defparameter *small* 1) + (defparameter *big* 100) + (guess-my-number) +) + +(defun smaller() + (setf *small* (1- (guess-my-number))) + (print (guess-my-number)) +) + +(defun bigger() + (setf *big* (1+ (guess-my-number))) + (print (guess-my-number)) +) + +(defun guess-my-number () + (ash (+ *small* *big*) -1) +) + +(defun game-loop () + (flet ((prompt (string) + (format "~A " string) + (finish-output) + (read nil 'eof nil))) + (fresh-line) + (let + ((last "?")) + (loop while (not (equal last "=")) + + do (setf last (prompt (format t "Is '~A' Smaller (<) or Larger (>)?" (guess-my-number)))) + (cond + ((string= last "<") (smaller)) + ((string= last ">") (bigger)) + ((string= last "=") (start-over)) + (t (print "Invalid Input") (print last) (fresh-line)) + ) + 'DONE)) + ) +) + +(print (equal "+" "+")) +(game-loop) \ No newline at end of file