annotate code/dotScanner.lm @ 77:41f16c010717

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