Mercurial > repos > icfp2014
comparison code/gameState.lm @ 46:d631e68a45d5
separated out grid functions for reuse inside gameState.lm
author | William Morgan <billjunk@mrgn.org> |
---|---|
date | Sun, 27 Jul 2014 01:36:39 -0700 |
parents | 75f808e60aa8 |
children | 115695e42307 |
comparison
equal
deleted
inserted
replaced
45:75f808e60aa8 | 46:d631e68a45d5 |
---|---|
6 map | 6 map |
7 fold:with | 7 fold:with |
8 filter | 8 filter |
9 flatten | 9 flatten |
10 ] from: (module: "ll.lm") | 10 ] from: (module: "ll.lm") |
11 | |
12 import: [ | |
13 makeTree:size | |
14 makeTree | |
15 get:fromTree:size | |
16 get:fromTree | |
17 treeMap:size | |
18 treeMap | |
19 tree:size:update:with | |
20 tree:update:with | |
21 tree:set:to | |
22 ] from: (module: "tree.lm") | |
23 | |
24 import: [ | |
25 grid:get | |
26 grid:update:with | |
27 grid:set:to | |
28 grid:inBounds? | |
29 calcPos | |
30 ] from: (module: "grid.lm") | |
11 | 31 |
12 myAnd <- :a b { | 32 myAnd <- :a b { |
13 // only ones and zeros | 33 // only ones and zeros |
14 (a + b) = 2 | 34 (a + b) = 2 |
15 } | 35 } |
16 | 36 |
17 makeTicker <- :mapWidth mapHeight { | 37 makeTicker <- :mapWidth mapHeight { |
38 lives <- 3 | |
39 win <- 0 | |
40 pillCount <- 50 | |
18 | 41 |
19 makeEventType <- :lagTick isMovement behavior{ | 42 makeEventType <- :lagTick isMovement behavior{ |
20 print: 12 | 43 print: 12 |
21 :curTick { | 44 :curTick { |
22 print: 11 | 45 print: 11 |
24 #[expireTick isMovement :gameState {behavior: expireTick gameState}] | 47 #[expireTick isMovement :gameState {behavior: expireTick gameState}] |
25 } | 48 } |
26 } | 49 } |
27 | 50 |
28 endOfLives <- makeEventType: (127 * mapWidth * mapHeight * 160) 0 :tick gameState { | 51 endOfLives <- makeEventType: (127 * mapWidth * mapHeight * 160) 0 :tick gameState { |
52 lives <- 0 | |
29 777 print | 53 777 print |
30 addEvents <- [] | 54 addEvents <- [] |
31 // set lives to zero | |
32 #[addEvents gameState] | 55 #[addEvents gameState] |
33 } | 56 } |
34 | 57 |
35 /* | 58 /* |
36 fruitStateEvent | 59 fruitStateEvent |
38 // set fruit state to on | 61 // set fruit state to on |
39 } | 62 } |
40 fruit2Appears <- (127 * 400) | 63 fruit2Appears <- (127 * 400) |
41 fruit1Expires <- (127 * 280) | 64 fruit1Expires <- (127 * 280) |
42 fruit2Expires <- (127 * 280) | 65 fruit2Expires <- (127 * 280) |
43 //moveLambdaMan <- 127 (eating, lamdamanId) | 66 |
44 //moveGhost <- (ghostType, ghostId) | 67 getLambdaManChoice <- :{0} |
68 moveLambdaMan <- makeEventType: 127 0 : tick { | |
69 move <- getLambdaManChoice: | |
70 if: move | |
71 } | |
72 (eating, lamdamanId) | |
73 moveGhost <- (ghostType, ghostId) | |
45 frightModeDeactivate <- (127 * 20) | 74 frightModeDeactivate <- (127 * 20) |
46 */ | 75 */ |
47 | 76 |
48 executeEvents <- :tick isMove events gameState { | 77 executeEvents <- :tick isMove events gameState { |
49 event <- 0 | 78 event <- 0 |
82 gameState <- (res tail) value | 111 gameState <- (res tail) value |
83 | 112 |
84 print: 15 | 113 print: 15 |
85 // 2.) actions | 114 // 2.) actions |
86 res <- executeEvents: tick 0 events gameState | 115 res <- executeEvents: tick 0 events gameState |
116 | |
87 events <- res value | 117 events <- res value |
88 gameState <- (res tail) value | 118 gameState <- (res tail) value |
89 | 119 |
90 print: 16 | 120 print: 16 |
91 // 3.) collide pills powerpills fruit | 121 // 3.) collide pills powerpills fruit |
92 | 122 |
93 #[events gameState] | 123 if: pillCount = 0 { |
124 win <- 1 | |
125 #[[] gameState] | |
126 } else: { | |
127 if: lives = 0 { | |
128 #[[] gameState] | |
129 } else: { | |
130 #[events gameState] | |
131 } | |
132 } | |
133 | |
94 } | 134 } |
95 | 135 |
96 nextTick <- :events { | 136 nextTick <- :events { |
97 print: 8 | 137 print: 8 |
98 fold: events 0x7FFFFFFF with: :curMin event { | 138 fold: events 0x7FFFFFFF with: :curMin event { |
112 events <- [ | 152 events <- [ |
113 endOfLives: 0 | 153 endOfLives: 0 |
114 ] | 154 ] |
115 print: 6 | 155 print: 6 |
116 gameState <- #[0 0] | 156 gameState <- #[0 0] |
117 while: {tick < runUntil} do: { | 157 while: {(tick < runUntil) and (not: (events empty?))} do: { |
118 print: 7 | 158 print: 7 |
119 tick <- events nextTick | 159 tick <- events nextTick |
120 print: 5 | 160 print: 5 |
121 res <- executeTick: tick events gameState | 161 res <- executeTick: tick events gameState |
122 print: 13 | 162 print: 13 |