Skip to content

Instantly share code, notes, and snippets.

@mullr
Created January 14, 2015 12:50
Show Gist options
  • Save mullr/1fe08c036012f4b147d9 to your computer and use it in GitHub Desktop.
Save mullr/1fe08c036012f4b147d9 to your computer and use it in GitHub Desktop.
The real clojure litmus test
(ns vintage-clojure.aceyducy)
(defn format-card [n]
(cond
(< n 11) (str n)
(= 11 n) "JACK"
(= 12 n) "QUEEN"
(= 13 n) "KING"
(= 14 n) "ACE"))
(defn draw-card []
(int (+ 2 (* 13 (Math/random)))))
(defn draw-two-cards []
(let [a (draw-card)
b (draw-card)]
(sort [a b])))
(defn show-next-two-cards [a b]
(println "HERE ARE YOUR NEXT TWO CARDS:" (format-card a) (format-card b))
(println))
(defn take-bet [q]
(println "WHAT IS YOUR BET")
(let [m (Integer/parseInt (read-line))]
(if (> m q)
(do
(println "SORRY, MY FRIEND, BUT YOU BET TOO MUCH.")
(println "YOU HAVE ONLY" q "DOLLARS TO BET.")
(recur q))
m)))
(defn play-turn [q]
(println "YOU NOW HAVE" q "DOLLARS.")
(println)
(let [[a b] (draw-two-cards)
_ (show-next-two-cards a b)
m (take-bet q)]
(if (zero? m)
(do (println "CHICKEN!")
q)
(let [c (draw-card)]
(println (format-card c))
(println " ")
(if (< a c b)
(do (println "YOU WIN!!!")
(+ q m))
(do (println "SORRY, YOU LOSE")
(- q m)))))))
(defn tab [n]
(apply str (repeat n \space)))
(defn main []
(println (tab 25) "ACEY DUCEY CARD GAME")
(println (tab 15) "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY")
(println " ")
(println " ")
(println "ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER ")
(println "THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP")
(println "YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING")
(println "ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE")
(println "A VALUE BETWEEN THE FIRST TWO.")
(println "IF YOU DO NOT WANT TO BET, INPUT A 0")
(loop [q 100]
(let [new-q (play-turn q)]
(if (pos? new-q)
(recur new-q)
(do
(println "SORRY, FRIEND, BUT YOU BLEW YOUR WAD.")
(println)
(println "TRY AGAIN (YES OR NO)")
(case (read-line)
"YES" (recur 100)
(do (println "O.K., HOPE YOU HAD FUN!"))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment