Mercurial > rlm
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 |