Mercurial > repos > icfp2012
diff src/sim.tp @ 44:0c09730c173e
Robot works on simple maps now
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 15 Jul 2012 17:21:27 -0700 |
parents | 20327ae2120b |
children | 9f1ca5ba2684 |
line wrap: on
line diff
--- a/src/sim.tp Sun Jul 15 14:41:28 2012 -0700 +++ b/src/sim.tp Sun Jul 15 17:21:27 2012 -0700 @@ -81,8 +81,11 @@ } consequenceOf <- :cur { - if: (cur eq: lambda) {collected <- collected + 1} - if: (cur eq: openLift) {mine succeeded!: true} + if: (cur eq: lambda) { + collected <- collected + 1 + mine addPoints: 25 + } + if: (cur eq: openLift) {mine succeeded!} } destination <- mine getCell: xPrime yPrime @@ -101,6 +104,13 @@ } } + clone <- { + myclone <- robot + myclone collected!: collected + myclone heldBreath!: heldBreath + myclone razors!: razors + myclone + } } commands set: "L" {ret move: (-1) 0 } commands set: "R" {ret move: 1 0 } @@ -120,7 +130,7 @@ nextGrid <- #[] _robot <- null endreached <- false - _lambdaCount <- 0 + _succeeded <- false ret <- #{ grid <- in_grid @@ -180,16 +190,19 @@ obj x!: (calcX: Index) obj y!: (calcY: Index) } - lambdaCount <- {_lambdaCount} + lambdaCount <- 0 water <- 0 flooding <- 0 waterproof <- 10 - moves <- 0 + moves <- #[] + score <- 0 + addPoints <- :points { score <- score + points } ended <- {endreached} succeeded <- {_succeeded} - succeeded! <- :newval { - endreached <- newval - _succeeded <- newval + succeeded! <- { + endreached <- true + _succeeded <- true + addPoints: lambdaCount * 50 } doUpdate <- { foreach: grid :index value { @@ -203,7 +216,7 @@ } } else: { if: (value eq: (cellTypes closedLift)) { - if: (_robot collected) = _lambdaCount { + if: (_robot collected) = lambdaCount { grid set: index (cellTypes openLift) } } @@ -211,10 +224,16 @@ } } advance <- :roboCmd { - endreached <- roboCmd = "A" + if: roboCmd = "A" { + endreached <- true + moves append: roboCmd + addPoints: (_robot collected) * 25 + } + if: (not: endreached) { _robot doCmd: roboCmd - moves <- moves + 1 + score <- score - 1 + moves append: roboCmd doUpdate: } self @@ -232,12 +251,19 @@ os write: 2 "\n" } } + os write: 2 "score: " . score . "\n" + os write: 2 "collected: " . (_robot collected) . "\n" + os write: 2 "moves: " + foreach: moves :idx m { + os write: 2 m + } + os write: 2 "\n" } clone <- { cgrid <- #[] foreach: grid :idx el { if: (el isrobot) { - cgrid append: (cellTypes robot) + cgrid append: (el clone) } else: { cgrid append: el } @@ -246,7 +272,13 @@ myclone water!: water myclone flooding!: flooding myclone waterproof!: waterproof - myclone moves!: moves + movesclone <- #[] + foreach: moves :idx el { + movesclone append: el + } + myclone moves!: movesclone + myclone score!: score + myclone lambdaCount!: lambdaCount myclone } } @@ -258,7 +290,7 @@ ret updatePos: _robot index } else: { if: (el eq: (cellTypes lambda)) { - _lambdaCount <- _lambdaCount + 1 + ret lambdaCount!: (ret lambdaCount) + 1 } }