annotate code/gameState.lm @ 45:75f808e60aa8

initial simulator ticker. needs print debug cleanup.
author William Morgan <billjunk@mrgn.org>
date Sat, 26 Jul 2014 23:30:55 -0700
parents
children d631e68a45d5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
1 #{
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
2 import: [
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
3 length
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
4 reverse
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
5 split:at
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
6 map
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
7 fold:with
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
8 filter
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
9 flatten
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
10 ] from: (module: "ll.lm")
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
11
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
12 myAnd <- :a b {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
13 // only ones and zeros
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
14 (a + b) = 2
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
15 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
16
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
17 makeTicker <- :mapWidth mapHeight {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
18
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
19 makeEventType <- :lagTick isMovement behavior{
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
20 print: 12
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
21 :curTick {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
22 print: 11
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
23 expireTick <- curTick + lagTick
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
24 #[expireTick isMovement :gameState {behavior: expireTick gameState}]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
25 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
26 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
27
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
28 endOfLives <- makeEventType: (127 * mapWidth * mapHeight * 160) 0 :tick gameState {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
29 777 print
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
30 addEvents <- []
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
31 // set lives to zero
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
32 #[addEvents gameState]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
33 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
34
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
35 /*
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
36 fruitStateEvent
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
37 fruit1Appears <- makeEventType: (127 * 200) 0 :gameState {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
38 // set fruit state to on
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
39 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
40 fruit2Appears <- (127 * 400)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
41 fruit1Expires <- (127 * 280)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
42 fruit2Expires <- (127 * 280)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
43 //moveLambdaMan <- 127 (eating, lamdamanId)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
44 //moveGhost <- (ghostType, ghostId)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
45 frightModeDeactivate <- (127 * 20)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
46 */
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
47
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
48 executeEvents <- :tick isMove events gameState {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
49 event <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
50 eventTick <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
51 eventIsMove <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
52 eventLam <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
53
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
54 unexpired <- []
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
55 res <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
56 while: { not: (events empty?) } do: {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
57 event <- events value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
58 eventTick <- event value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
59 eventIsMove <- (event tail) value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
60 print: 17
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
61 if: ( ( eventTick = tick ) myAnd: ( eventIsMove = isMove ) ) {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
62 eventLam <- ((event tail) tail)
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
63 res <- eventLam: gameState
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
64 unexpired <- res value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
65 gameState <- res tail
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
66 } else: {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
67 unexpired <- event | unexpired
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
68 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
69 events <- events tail
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
70 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
71 print: 18
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
72 #[unexpired gameState]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
73 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
74
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
75 executeTick <- :tick events gameState {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
76 // TODO: update fruit countdown for AI input
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
77
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
78 print: 14
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
79 // 1.) movement
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
80 res <- executeEvents: tick 1 events gameState
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
81 events <- res value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
82 gameState <- (res tail) value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
83
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
84 print: 15
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
85 // 2.) actions
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
86 res <- executeEvents: tick 0 events gameState
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
87 events <- res value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
88 gameState <- (res tail) value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
89
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
90 print: 16
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
91 // 3.) collide pills powerpills fruit
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
92
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
93 #[events gameState]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
94 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
95
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
96 nextTick <- :events {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
97 print: 8
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
98 fold: events 0x7FFFFFFF with: :curMin event {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
99 print: #[9 curMin event]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
100 eventTick <- event value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
101 print: 10
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
102 if: eventTick < curMin {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
103 curMin <- eventTick
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
104 } else: {}
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
105 curMin
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
106 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
107 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
108 print: 4
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
109 :runUntil {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
110 res <- 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
111 tick <- 1
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
112 events <- [
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
113 endOfLives: 0
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
114 ]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
115 print: 6
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
116 gameState <- #[0 0]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
117 while: {tick < runUntil} do: {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
118 print: 7
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
119 tick <- events nextTick
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
120 print: 5
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
121 res <- executeTick: tick events gameState
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
122 print: 13
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
123 events <- res value
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
124 gameState <- res tail
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
125 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
126 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
127 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
128
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
129 step <- :myState world {
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
130 print: 1
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
131 ticker <- makeTicker: 10 10
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
132 print: 2
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
133 ticker: 1000
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
134 print: 3
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
135
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
136 #[0 0]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
137 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
138
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
139 main <- :initWorld ghostCode{
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
140 #[0 step]
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
141 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
142 }
75f808e60aa8 initial simulator ticker. needs print debug cleanup.
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
143