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 +