annotate code/ghost1.gq @ 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 920f02a880fc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
71
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #{
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 up <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3 right <- 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 down <- 2
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5 left <- 3
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 lastX <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 lastY <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9 getDirX <- :dir startX {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 if: dir = right {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 startX <- startX + 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 if: dir = left {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 startX <- startX - 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 startX
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 getDirY <- :dir startY {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 if: dir = up {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 startY <- startY - 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 if: dir = down {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 startY <- startY + 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 startY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
29 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
30
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
31 opDir <- :dir {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
32 if: dir < 2 {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
33 dir <- dir + 2
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
34 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
35 dir <- dir - 2
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
36 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
37 dir
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
38 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
39
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
40 goTowardsX:Y <- :targetX targetY {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
41 myIdx <- (me: )
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
42 myX <- ghostPos: myIdx
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
43 myY <- yCoord
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
44 myVit <- ghostStatus: myIdx
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
45 myDir <- direction
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
46
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
47
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
48 firstChoice <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
49 secondChoice <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
50
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
51 if: myX > targetX {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
52 //ghost is to the right of target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
53 if: myY > targetY {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
54 //ghost is below target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
55 if: (myX - targetX) > (myY - targetY) {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
56 //target is more left than up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
57 firstChoice <- left
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
58 secondChoice <- up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
59 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
60 firstChoice <- up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
61 secondChoice <- left
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
62 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
63 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
64 //ghost is above or directly to the right of target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
65 if: (myX - targetX) > (targetY - myY) {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
66 //target is more left than down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
67 firstChoice <- left
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
68 secondChoice <- down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
69 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
70 //target is more down than left
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
71 firstChoice <- down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
72 secondChoice <- left
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
73 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
74 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
75 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
76 //ghost is to the left of or directly above/below target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
77 if: myY > targetY {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
78 //ghost is below target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
79 if: (targetX - myX) > (myY - targetY) {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
80 //target is more right than up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
81 firstChoice <- right
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
82 secondChoice <- up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
83 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
84 firstChoice <- up
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
85 secondChoice <- right
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
86 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
87 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
88 //ghost is above or directly to the left of target
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
89 if: (targetX - myX) > (targetY - myY) {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
90 //target is more right than down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
91 firstChoice <- right
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
92 secondChoice <- down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
93 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
94 //target is more down than right
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
95 firstChoice <- down
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
96 secondChoice <- right
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
97 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
98 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
99 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
100 if: myVit = 1 {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
101 //currently in fright mode, try to run away
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
102 firstChoice <- opDir: firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
103 secondChoice <- opDir: secondChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
104 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
105
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
106
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
107
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
108 tmp <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
109 i <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
110 while: { i < 3} do: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
111 targetX <- getDirX: firstChoice myX
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
112 targetY <- getDirY: firstChoice myY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
113
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
114 if: (mapContentsAt: targetX targetY) - 1 > 4 {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
115 //first choice is a wall or ghost start pos
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
116 tmp <- firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
117 firstChoice <- secondChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
118 secondChoice <- opDir: firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
119 i <- i + 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
120 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
121 if: firstChoice = (opDir: myDir) {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
122 //first choice is backwards
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
123 tmp <- firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
124 firstChoice <- secondChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
125 secondChoice <- opDir: firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
126 i <- i + 1
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
127 } else: {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
128 i <- 3
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
129 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
130 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
131 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
132 direction!: firstChoice
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
133
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
134 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
135 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
136
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
137 //tries to intercept lambda man by targeting a
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
138 //position two cells ahead of his current position
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
139 main <- {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
140 lmX <- lambdamanPos:
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
141 lmY <- yCoord
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
142 diffX <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
143 diffY <- 0
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
144
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
145 if: notFirst? = 1 {
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
146 diffX <- lmX - lastX
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
147 diffY <- lmY - lastY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
148 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
149 lastX <- lmX
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
150 lastY <- lmY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
151
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
152 lmX <- (lmX + diffX) + diffX
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
153 lmY <- (lmY + diffY) + diffY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
154
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
155 goTowardsX: lmX Y: lmY
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
156
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
157 }
920f02a880fc Added interceptor ghost
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
158 }