annotate code/dotScanner.lm @ 78:3b8a277decfa

Remove unneeded import to dotScanner
author Michael Pavone <pavone@retrodev.com>
date Mon, 28 Jul 2014 03:11:01 -0700
parents 41f16c010717
children dcfa97976071
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
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
37 edibleGhosts <- 0
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
38
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
39 advancer <- :continuations {
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
40 notdone <- 1
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
41 while: { notdone } do: {
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
42 if: (continuations isInteger?) {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
43 notdone <- 0
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
44 } else: {
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
45 continuations <- fold: continuations [] with: :acc el{
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
46 ret <- acc
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
47 if: notdone {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
48 ret <- el:
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
49 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
50 ret <- acc
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
51 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
52 if: (ret value) {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
53 notdone <- 0
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
54 ret <- (ret tail)
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
55 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
56 ret <- (ret tail) | acc
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 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
59 } else: {}
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
60 ret
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
61 }
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
62 if: notdone {
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
63 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
64 } else: {}
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
65 }
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
66 }
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
67 continuations
26
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
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
70 makeContClos <- :grid myLoc path {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
71 {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
72 ret <- []
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
73 move <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
74 atpos <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
75 if: (grid: grid inBounds?: myLoc) {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
76 if: (grid: visited get: myLoc) {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
77 } else: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
78 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
79 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
80 } 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
81 //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
82 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
83 atpos <- 1
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
84 } else: {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
85 if: edibleGhosts > 0 {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
86 if: (atpos = 2) {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
87 atpos <- 1
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
88 } else: {}
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
89 } else: {}
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
90 }
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
91 }
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
92 if: (atpos = 2) + (atpos = 3) + (atpos = 4) + (atpos = 7) {
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
93 //pellet, power pellet, fruit
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
94 ret <- #[1 (reverse: path)]
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
95 } else: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
96 visited <- grid: visited set: myLoc to: 1
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
97 if: atpos {
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
98 //empty space
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
99 move <- 0
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
100 while: { move < 4 } do: {
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
101 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
102 move <- move + 1
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
103 }
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
104 ret <- #[0 ret]
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
105 } else: {}
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
106 }
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
107 }
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
108 } else: {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
109 }
26
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
110 ret
4f7a421e77c6 Tag teaming the continuation function
William Morgan <billjunk@mrgn.org>
parents: 25
diff changeset
111 }
24
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
112 }
37158acf31e5 Initial pass at scan loop
William Morgan <billjunk@mrgn.org>
parents: 12
diff changeset
113
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
114 step <- :myState world {
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
115 lmState <- (world tail) value
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
116 myVitality <- lmState 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
117 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
118 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
119 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
120
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
121 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
122 if: fruitState >= 127 {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
123 } else: {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
124 row <- map: row :el {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
125 //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
126 if: el = 4 {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
127 el <- 1
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
128 } else: {}
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
129 el
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
130 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
131 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
132 makeTree: row
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
133 })
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
134 badGhostCount <- 0
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
135 edibleGhosts <- 0
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
136 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
137 vitality <- ghost value
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
138 loc <- (ghost tail) value
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
139 dir <- (ghost tail) tail
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
140 nextloc <- 0
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
141 move <- 0
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
142 manHatDist <- 0
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
143 if: vitality = 1 {
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
144
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
145 if: (myLoc value) > (loc value) {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
146 manHatDist <- (myLoc value) - (loc value)
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
147 } else: {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
148 manHatDist <- (loc value) - (myLoc value)
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
149 }
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
150 if: (myLoc tail) > (loc tail) {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
151 manHatDist <- manHatDist + (myLoc tail) - (loc tail)
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
152 } else: {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
153 manHatDist <- manHatDist + (loc tail) - (myLoc tail)
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
154 }
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
155 if: myVitality > (manHatDist * 254) {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
156 edibleGhosts <- edibleGhosts + 1
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
157 } else: {}
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
158 //mark fright mode ghosts
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
159 acc <- grid: acc set: loc to: 7
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
160 } else: {
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
161 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
162 badGhostCount <- badGhostCount + 1
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
163 //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
164 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
165 while: { move < 4 } do: {
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
166 nextloc <- calcPos: move loc
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
167 if: (grid: acc inBounds?: nextloc) {
76
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
168 acc <- grid: acc update: nextloc with: :oldval {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
169 if: oldval = 3 {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
170 } else: {
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
171 oldval <- 0
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
172 }
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
173 oldval
47eb447a74cc Don't chase ghosts we can't catch
Michael Pavone <pavone@retrodev.com>
parents: 75
diff changeset
174 }
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
175 } else: {}
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
176 move <- move + 1
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
177 }
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
178 } else: {}
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
179 }
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
180 acc
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
181 }
35
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
182 //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
183 grid <- grid: grid set: myLoc to: 1
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
184 visited <- treeMap: grid :row {
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
185 treeMap: row :el { 0 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
186 }
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
187 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
188 if: (path isInteger?) {
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
189 print: 42
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
190 path <- [0]
8c26981aae8c Last fixes for lightning round version of dotScanner.lm
Michael Pavone <pavone@retrodev.com>
parents: 34
diff changeset
191 } else: {}
28
75c97fb80602 Tag team simple AI WIP
William Morgan <billjunk@mrgn.org>
parents: 26
diff changeset
192 #[0 (path value)]
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
193 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
194
30
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
195 main <- :initWorld ghostCode {
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
196 /*
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
197 print: (step: 0 #[
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
198 //grid
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
199 [
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
200 [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
201 [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
202 [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
203 [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
204 ]
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
205 //lmstate
29
5d1ac440b9db Seems to be working in CPU simulator. Need to remove debug crap
William Morgan <billjunk@mrgn.org>
parents: 28
diff changeset
206 #[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
207 //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
208 []
34
968705fcb4c6 Initial stab at taking fruit and ghost state into account
Michael Pavone <pavone@retrodev.com>
parents: 32
diff changeset
209 //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
210 0
30
3287eb6c25fe Sort of working in the game simulator!!!!!
William Morgan <billjunk@mrgn.org>
parents: 29
diff changeset
211 ]) */
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
212 #[0 step]
12
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
213 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
214 }
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
215
1c6d4f2642d0 Fist progress toward a simple recursive dot scanner bot
William Morgan <billjunk@mrgn.org>
parents:
diff changeset
216