annotate code/dotScanner.lm @ 75:6df7f6372d29

Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
author Michael Pavone <pavone@retrodev.com>
date Mon, 28 Jul 2014 02:12:10 -0700
parents 57a4bddadd46
children 47eb447a74cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
1 #{
40
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
2 import: [
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
3 length
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
4 reverse
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
5 split:at
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
6 map
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
7 fold:with
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
8 filter
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
9 flatten
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
10 ] from: (module: "ll.lm")
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
11
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
12 import: [
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
13 makeTree:size
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
14 makeTree
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
15 get:fromTree:size
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
16 get:fromTree
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
17 treeMap:size
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
18 treeMap
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
19 tree:size:update:with
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
20 tree:update:with
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
21 tree:set:to
d5ccb66ae98b Move some basic library code out of dotScanner.lm into separate files now that import:from works
Michael Pavone <pavone@retrodev.com>
parents: 35
diff changeset
22 ] from: (module: "tree.lm")
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
23
46
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
24 import: [
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
25 grid:get
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
26 grid:update:with
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
27 grid:set:to
50
57a4bddadd46 added new helper functions to grids. more bugfixes to gameState.lm which compiles.
William Morgan <billjunk@mrgn.org>
parents: 46
diff changeset
28 gridMaxX
57a4bddadd46 added new helper functions to grids. more bugfixes to gameState.lm which compiles.
William Morgan <billjunk@mrgn.org>
parents: 46
diff changeset
29 gridMaxY
57a4bddadd46 added new helper functions to grids. more bugfixes to gameState.lm which compiles.
William Morgan <billjunk@mrgn.org>
parents: 46
diff changeset
30 gridArea
46
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
31 grid:inBounds?
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
32 calcPos
d631e68a45d5 separated out grid functions for reuse inside gameState.lm
William Morgan <billjunk@mrgn.org>
parents: 40
diff changeset
33 ] from: (module: "grid.lm")
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
34
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
35 visited <- 0
75
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
36 badGhostCount <- 0
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
37
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
38 advancer <- :continuations {
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
39 notdone <- 1
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
40 while: { notdone } do: {
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
41 if: (continuations isInteger?) {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
42 notdone <- 0
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
43 } else: {
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
44 continuations <- fold: continuations [] with: :acc el{
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
45 ret <- acc
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
46 if: notdone {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
47 ret <- el:
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
48 if: (ret isInteger?) {
31
3812bf35168d Simple AI seems to work now. Lots of debug junk needs to be removed though
Michael Pavone <pavone@retrodev.com>
parents: 30
diff changeset
49 ret <- acc
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
50 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
51 if: (ret value) {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
52 notdone <- 0
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
53 ret <- (ret tail)
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
54 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
55 ret <- (ret tail) | acc
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
56 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
57 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
58 } else: {}
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
59 ret
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
60 }
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
61 if: notdone {
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
62 continuations <- flatten: continuations
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
63 } else: {}
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
64 }
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
65 }
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
66 continuations
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
67 }
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
68
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
69 makeContClos <- :grid myLoc path {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
70 {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
71 ret <- []
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
72 move <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
73 atpos <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
74 if: (grid: grid inBounds?: myLoc) {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
75 if: (grid: visited get: myLoc) {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
76 } else: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
77 atpos <- grid: grid get: myLoc
75
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
78 if: badGhostCount > 0 {
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
79 } else: {
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
80 //treat power pellets as empty space when there are no ghosts in normal mode
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
81 if: (atpos = 3) {
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
82 atpos <- 1
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
83 } else: {}
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
84 }
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
85 if: (atpos = 2) + (atpos = 3) + (atpos = 4) {
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
86 //pellet, power pellet, fruit
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
87 ret <- #[1 (reverse: path)]
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
88 } else: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
89 visited <- grid: visited set: myLoc to: 1
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
90 if: atpos {
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
91 //empty space
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
92 move <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
93 while: { move < 4 } do: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
94 ret <- (makeContClos: grid (calcPos: move myLoc) move | path) | ret
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
95 move <- move + 1
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
96 }
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
97 ret <- #[0 ret]
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
98 } else: {}
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
99 }
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
100 }
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
101 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
102 }
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
103 ret
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
104 }
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
105 }
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
106
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
107 step <- :myState world {
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
108 lmState <- (world tail) value
23
5ded24518dc5 Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents: 12
diff changeset
109 myLoc <- (lmState tail) value
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
110 ghostState <- ((world tail) tail) value
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
111 fruitState <- ((world tail) tail) tail
23
5ded24518dc5 Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents: 12
diff changeset
112
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
113 grid <- makeTree: (map: (world value) :row {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
114 if: fruitState >= 127 {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
115 } else: {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
116 row <- map: row :el {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
117 //remove fruit if it is not enabled
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
118 if: el = 4 {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
119 el <- 1
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
120 } else: {}
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
121 el
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
122 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
123 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
124 makeTree: row
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
125 })
75
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
126 badGhostCount <- 0
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
127 grid <- fold: ghostState grid with: :acc ghost {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
128 vitality <- ghost value
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
129 loc <- (ghost tail) value
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
130 dir <- (ghost tail) tail
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
131 nextloc <- 0
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
132 move <- 0
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
133 if: vitality = 1 {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
134 //treat fright mode ghosts as a pellet for now
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
135 acc <- grid: acc set: loc to: 2
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
136 } else: {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
137 if: vitality = 0 {
75
6df7f6372d29 Small tweak to dotScanner lambda man AI to ignore power pellets when it would be wasteful to eat them
Michael Pavone <pavone@retrodev.com>
parents: 50
diff changeset
138 badGhostCount <- badGhostCount + 1
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
139 //treat normal mode ghosts as a wall for now
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
140 acc <- grid: acc set: loc to: 0
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
141 while: { move < 4 } do: {
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
142 nextloc <- calcPos: move loc
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
143 if: (grid: acc inBounds?: nextloc) {
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
144 acc <- grid: acc set: nextloc to: 0
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
145 } else: {}
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
146 move <- move + 1
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
147 }
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
148 } else: {}
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
149 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
150 acc
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
151 }
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
152 //make sure my location is marked clear even if there is a ghost nearby
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
153 grid <- grid: grid set: myLoc to: 1
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
154 visited <- treeMap: grid :row {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
155 treeMap: row :el { 0 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
156 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
157 path <- advancer: [(makeContClos: grid myLoc [])]
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
158 if: (path isInteger?) {
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
159 print: 42
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
160 path <- [0]
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
161 } else: {}
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
162 #[0 (path value)]
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
163 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
164
30
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
165 main <- :initWorld ghostCode {
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
166 /*
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
167 print: (step: 0 #[
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
168 //grid
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
169 [
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
170 [0 0 0 0]
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
171 [0 2 2 0]
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
172 [0 1 0 0]
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
173 [0 0 0 0]
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
174 ]
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
175 //lmstate
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
176 #[0 #[1 2] 2 3 0]
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
177 //ghost state
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
178 []
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
179 //fruit state
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
180 0
30
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
181 ]) */
23
5ded24518dc5 Add library functions from mike00.lm to dotScanner.lm. Add some code to process map state into a "grid" structure and make a version for visited state.
Michael Pavone <pavone@retrodev.com>
parents: 12
diff changeset
182 #[0 step]
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
183 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
184 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
185
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
186