Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
39
Task/Rock-paper-scissors/Clojure/rock-paper-scissors.clj
Normal file
39
Task/Rock-paper-scissors/Clojure/rock-paper-scissors.clj
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
(ns rps.core
|
||||
(:require [clojure.data.generators :refer [weighted]])
|
||||
(:import jline.Terminal)
|
||||
(:gen-class))
|
||||
|
||||
(def what-beats {:rock :paper, :paper :scissors, :scissors :rock})
|
||||
|
||||
(defn battle [human comp]
|
||||
(let [h (name human)
|
||||
c (name comp)]
|
||||
(cond
|
||||
(= human comp) (println (format "We both picked %s. DRAW!" c))
|
||||
(= human (what-beats comp))
|
||||
(println (format "Your %s defeats computer's %s. YOU WIN!" h c))
|
||||
(= comp (what-beats human))
|
||||
(println (format "Computer's %s defeats your %s. YOU LOSE!" c h))
|
||||
:else (println (format "Wat? %s and %s ?" h c)))))
|
||||
|
||||
(defn key->rps [k]
|
||||
(cond
|
||||
(or (= k 82) (= k 114)) :rock
|
||||
(or (= k 80) (= k 112)) :paper
|
||||
(or (= k 83) (= k 115)) :scissors
|
||||
:else nil))
|
||||
|
||||
(defn play-game [freqs]
|
||||
(println "\n(R)ock, (P)aper, (S)cissors?")
|
||||
(let [term (Terminal/getTerminal)
|
||||
rps (key->rps (.readCharacter term System/in))]
|
||||
(if-not (nil? rps)
|
||||
(do
|
||||
(battle rps (what-beats (weighted freqs)))
|
||||
(recur (assoc freqs rps (inc (rps freqs)))))
|
||||
(println "Game Over Man! Game Over!"))))
|
||||
|
||||
(defn -main
|
||||
"Rock, Paper, Scissors!"
|
||||
[& args]
|
||||
(play-game {:rock 1, :paper 1, :scissors 1}))
|
||||
Loading…
Add table
Add a link
Reference in a new issue