annotate src/rlm/mtg.clj @ 0:78a630e650d2

initial import
author Robert McIntyre <rlm@mit.edu>
date Tue, 18 Oct 2011 00:57:08 -0700
parents
children
rev   line source
rlm@0 1 ;; GAME TEMPLATES
rlm@0 2
rlm@0 3 ;player groups and alliances
rlm@0 4 (def *no-one 'group-no-one) ;no one
rlm@0 5 (def *self 'group-self) ;one's self
rlm@0 6 (def *allies 'group-allies) ;one's allies
rlm@0 7 (def *enemies 'group-enemies);one's enemies
rlm@0 8 (def *everyone 'group-everyone) ;everyone
rlm@0 9 (def *inherit 'group-inherit) ;default
rlm@0 10
rlm@0 11
rlm@0 12 (defn create-zonetype [name visibility]
rlm@0 13 (list 'zone-type name visibility)
rlm@0 14 )
rlm@0 15
rlm@0 16 (defn create-quantity [name initial-value]
rlm@0 17 (list 'quantity name initial-value)
rlm@0 18 )
rlm@0 19
rlm@0 20
rlm@0 21 (defn gametype-mtg[]
rlm@0 22 {
rlm@0 23 :zone-types
rlm@0 24 (list
rlm@0 25 (create-zonetype 'library *no-one)
rlm@0 26 (create-zonetype 'graveyard *everyone)
rlm@0 27 (create-zonetype 'out-of-play *inherit)
rlm@0 28 (create-zonetype 'batlefield *inherit)
rlm@0 29 (create-zonetype 'hand *self)
rlm@0 30 )
rlm@0 31 :player-quantities (list
rlm@0 32 (create-quantity 'life 20)
rlm@0 33 (create-quantity 'red-mana 0)
rlm@0 34 (create-quantity 'blue-mana 0)
rlm@0 35 (create-quantity 'green-mana 0)
rlm@0 36 (create-quantity 'white-mana 0)
rlm@0 37 (create-quantity 'black-mana 0)
rlm@0 38 (create-quantity 'colorless-mana 0)
rlm@0 39 )
rlm@0 40
rlm@0 41 :fn-add-player (fn[player-name & teammates]
rlm@0 42 (list 'player player-name)
rlm@0 43 )
rlm@0 44 }
rlm@0 45
rlm@0 46 )
rlm@0 47
rlm@0 48
rlm@0 49 ;; GAME INSTANCES
rlm@0 50 (defn add-player[game player-name & teammates]
rlm@0 51 (apply (game :gametype :fn-add-player) (cons player-name teammates))
rlm@0 52 )
rlm@0 53
rlm@0 54 (defn new-game [gametype]
rlm@0 55 {
rlm@0 56 :gametype (gametype)
rlm@0 57 :players (ref '())
rlm@0 58 :allies (ref '()) ;list of (player-1 player-2 relationship). transitive.
rlm@0 59 }
rlm@0 60 )
rlm@0 61