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