Just another update

This commit is contained in:
Ingy döt Net 2015-02-20 00:35:01 -05:00
parent a25938f123
commit 00a190b0a6
6591 changed files with 94363 additions and 23227 deletions

View 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}))