Mercurial > rlm
diff 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 |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/rlm/mtg.clj Tue Oct 18 00:57:08 2011 -0700 1.3 @@ -0,0 +1,61 @@ 1.4 +;; GAME TEMPLATES 1.5 + 1.6 +;player groups and alliances 1.7 +(def *no-one 'group-no-one) ;no one 1.8 +(def *self 'group-self) ;one's self 1.9 +(def *allies 'group-allies) ;one's allies 1.10 +(def *enemies 'group-enemies);one's enemies 1.11 +(def *everyone 'group-everyone) ;everyone 1.12 +(def *inherit 'group-inherit) ;default 1.13 + 1.14 + 1.15 +(defn create-zonetype [name visibility] 1.16 + (list 'zone-type name visibility) 1.17 +) 1.18 + 1.19 +(defn create-quantity [name initial-value] 1.20 + (list 'quantity name initial-value) 1.21 +) 1.22 + 1.23 + 1.24 +(defn gametype-mtg[] 1.25 + { 1.26 + :zone-types 1.27 + (list 1.28 + (create-zonetype 'library *no-one) 1.29 + (create-zonetype 'graveyard *everyone) 1.30 + (create-zonetype 'out-of-play *inherit) 1.31 + (create-zonetype 'batlefield *inherit) 1.32 + (create-zonetype 'hand *self) 1.33 + ) 1.34 + :player-quantities (list 1.35 + (create-quantity 'life 20) 1.36 + (create-quantity 'red-mana 0) 1.37 + (create-quantity 'blue-mana 0) 1.38 + (create-quantity 'green-mana 0) 1.39 + (create-quantity 'white-mana 0) 1.40 + (create-quantity 'black-mana 0) 1.41 + (create-quantity 'colorless-mana 0) 1.42 + ) 1.43 + 1.44 + :fn-add-player (fn[player-name & teammates] 1.45 + (list 'player player-name) 1.46 + ) 1.47 + } 1.48 + 1.49 +) 1.50 + 1.51 + 1.52 +;; GAME INSTANCES 1.53 +(defn add-player[game player-name & teammates] 1.54 + (apply (game :gametype :fn-add-player) (cons player-name teammates)) 1.55 +) 1.56 + 1.57 +(defn new-game [gametype] 1.58 + { 1.59 + :gametype (gametype) 1.60 + :players (ref '()) 1.61 + :allies (ref '()) ;list of (player-1 player-2 relationship). transitive. 1.62 + } 1.63 +) 1.64 +