From f0e7c9f3f07b57a8a02191ea0a8d86432ab0ebea Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Fri, 14 Feb 2025 20:53:44 +0000 Subject: WIP: Making a simple re-deal program. Gives a hand from a shuffled deck to the user, asks them to provide indices for cards they wish to re-deal then does so. --- cantedraw.asd | 1 + main.lisp | 27 ++++++++++++++++++++++----- packages.lisp | 4 +++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/cantedraw.asd b/cantedraw.asd index 653afb4..c3dcc4e 100644 --- a/cantedraw.asd +++ b/cantedraw.asd @@ -1,4 +1,5 @@ (asdf:defsystem :cantedraw + :depends-on (:alexandria) :components ((:file "packages") (:file "lib.macros") (:file "lib.functions") diff --git a/main.lisp b/main.lisp index 2bd3102..53d9bec 100644 --- a/main.lisp +++ b/main.lisp @@ -32,7 +32,8 @@ (remove-if #'null))) (fn read-integers () (-> nil list) - (->> (read-input "Enter numbers: ") + (->> "Enter numbers: " + read-input parse-integers)) (fn read-until-integers () (-> nil list) @@ -43,8 +44,24 @@ (setq inp (read-integers))) inp)) +(fn is-valid-hand-index (n) (-> (fixnum) boolean) + (and (< n 5) + (>= n 0))) + +(fn read-until-valid-integers () (-> nil list) + (let ((inp (remove-duplicates (read-integers)))) + (while (not (every #'is-valid-hand-index inp)) + (format t "Need at most 5 integers between 0 and 4...~%") + (force-output) + (setq inp (remove-duplicates (read-integers)))))) + +(defun generate-hand () + (->> (make-deck) + alexandria:shuffle + (split 5))) + (defun start () - (--> var - (read-until-integers) - (cons '+ var) - (format t "~a = ~a~%" var (eval var)))) + (destructuring-bind (hand . rest) (generate-hand) + (declare (ignore rest)) + (->> hand cardset->str (format t "Hand=[~a]~%")) + (force-output))) diff --git a/packages.lisp b/packages.lisp index 28fd51b..90c6dcf 100644 --- a/packages.lisp +++ b/packages.lisp @@ -48,5 +48,7 @@ :make-joker :make-deck)) (defpackage cantedraw.main - (:use :cl :cantedraw.lib.macros :cantedraw.lib.functions) + (:use :cl + :cantedraw.lib.macros :cantedraw.lib.functions + :cantedraw.model) (:export :start)) -- cgit v1.2.3-13-gbd6f