Mercurial > rlm
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78a630e650d2 |
---|---|
1 ;; GAME TEMPLATES | |
2 | |
3 ;player groups and alliances | |
4 (def *no-one 'group-no-one) ;no one | |
5 (def *self 'group-self) ;one's self | |
6 (def *allies 'group-allies) ;one's allies | |
7 (def *enemies 'group-enemies);one's enemies | |
8 (def *everyone 'group-everyone) ;everyone | |
9 (def *inherit 'group-inherit) ;default | |
10 | |
11 | |
12 (defn create-zonetype [name visibility] | |
13 (list 'zone-type name visibility) | |
14 ) | |
15 | |
16 (defn create-quantity [name initial-value] | |
17 (list 'quantity name initial-value) | |
18 ) | |
19 | |
20 | |
21 (defn gametype-mtg[] | |
22 { | |
23 :zone-types | |
24 (list | |
25 (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 (list | |
32 (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 ) | |
40 | |
41 :fn-add-player (fn[player-name & teammates] | |
42 (list 'player player-name) | |
43 ) | |
44 } | |
45 | |
46 ) | |
47 | |
48 | |
49 ;; GAME INSTANCES | |
50 (defn add-player[game player-name & teammates] | |
51 (apply (game :gametype :fn-add-player) (cons player-name teammates)) | |
52 ) | |
53 | |
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 ) | |
61 |