# HG changeset patch # User Michael Pavone # Date 1406364084 25200 # Node ID 968705fcb4c66e8d529a33c7f33459f7e8149b86 # Parent 934d03d42a7e255948080dc9da1171ce8395c7e6 Initial stab at taking fruit and ghost state into account diff -r 934d03d42a7e -r 968705fcb4c6 code/dotScanner.lm --- a/code/dotScanner.lm Sat Jul 26 01:02:41 2014 -0700 +++ b/code/dotScanner.lm Sat Jul 26 01:41:24 2014 -0700 @@ -260,10 +260,12 @@ } else: { atpos <- grid: grid get: myLoc if: (atpos = 2) + (atpos = 3) + (atpos = 4) { + //pellet, power pellet, fruit ret <- #[1 (reverse: path)] } else: { visited <- grid: visited set: myLoc to: 1 if: atpos { + //empty space move <- 0 while: { move < 4 } do: { ret <- (makeContClos: grid (calcPos: move myLoc) move | path) | ret @@ -280,10 +282,38 @@ } step <- :myState world { - grid <- makeTree: (map: (world value) :row { makeTree: row }) lmState <- (world tail) value myLoc <- (lmState tail) value + ghostState <- ((world tail) tail) value + fruitState <- ((world tail) tail) tail + grid <- makeTree: (map: (world value) :row { + if: fruitState >= 127 { + } else: { + row <- map: row :el { + //remove fruit if it is not enabled + if: el = 4 { + el <- 1 + } else: {} + el + } + } + makeTree: row + }) + grid <- fold: ghostState grid with: :acc ghost { + vitality <- ghost value + loc <- (ghost tail) value + if: vitality = 1 { + //treat fright mode ghosts as a pellet for now + acc <- grid: acc set: loc to: 2 + } else: { + if: vitality = 0 { + //treat normal mode ghosts as a wall for now + acc <- grid: acc set: loc to: 0 + } else: {} + } + acc + } visited <- treeMap: grid :row { treeMap: row :el { 0 } } @@ -294,14 +324,18 @@ main <- :initWorld ghostCode { /* print: (step: 0 #[ + //grid [ [0 0 0 0] [0 2 2 0] [0 1 0 0] [0 0 0 0] ] + //lmstate #[0 #[1 2] 2 3 0] + //ghost state [] + //fruit state 0 ]) */ #[0 step]