Mercurial > rlm
view 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 source
1 ;; GAME TEMPLATES3 ;player groups and alliances4 (def *no-one 'group-no-one) ;no one5 (def *self 'group-self) ;one's self6 (def *allies 'group-allies) ;one's allies7 (def *enemies 'group-enemies);one's enemies8 (def *everyone 'group-everyone) ;everyone9 (def *inherit 'group-inherit) ;default12 (defn create-zonetype [name visibility]13 (list 'zone-type name visibility)14 )16 (defn create-quantity [name initial-value]17 (list 'quantity name initial-value)18 )21 (defn gametype-mtg[]22 {23 :zone-types24 (list25 (create-zonetype 'library *no-one)26 (create-zonetype 'graveyard *everyone)27 (create-zonetype 'out-of-play *inherit)28 (create-zonetype 'batlefield *inherit)29 (create-zonetype 'hand *self)30 )31 :player-quantities (list32 (create-quantity 'life 20)33 (create-quantity 'red-mana 0)34 (create-quantity 'blue-mana 0)35 (create-quantity 'green-mana 0)36 (create-quantity 'white-mana 0)37 (create-quantity 'black-mana 0)38 (create-quantity 'colorless-mana 0)39 )41 :fn-add-player (fn[player-name & teammates]42 (list 'player player-name)43 )44 }46 )49 ;; GAME INSTANCES50 (defn add-player[game player-name & teammates]51 (apply (game :gametype :fn-add-player) (cons player-name teammates))52 )54 (defn new-game [gametype]55 {56 :gametype (gametype)57 :players (ref '())58 :allies (ref '()) ;list of (player-1 player-2 relationship). transitive.59 }60 )