comparison src/sim.tp @ 36:814e3d482ad3

Make navigable a property of the cell type so I can use it in lifter
author Mike Pavone <pavone@retrodev.com>
date Sun, 15 Jul 2012 11:07:11 -0700
parents 8e8903cc0997
children 9bccdb3ac979 f38437d22ebd
comparison
equal deleted inserted replaced
35:8e8903cc0997 36:814e3d482ad3
16 } 16 }
17 17
18 makeCellTypes <- { 18 makeCellTypes <- {
19 typedict <- dict linear 19 typedict <- dict linear
20 new <- :idStr { 20 new <- :idStr {
21 cannav <- if: idStr = " " {true} else: {
22 if: idStr = "." {true} else: {
23 if: idStr = "\\" {true} else: {
24 if: idStr = "O" {true} else: {
25 false }}}}
21 ret <- #{ 26 ret <- #{
22 id <- (idStr byte: 0) 27 id <- (idStr byte: 0)
23 string <- idStr 28 string <- idStr
24 isrobot <- { false } 29 isrobot <- { false }
25 eq <- :other { id = (other id) } 30 eq <- :other { id = (other id) }
31 navigable <- { cannav }
26 } 32 }
27 typedict set: (ret id) ret 33 typedict set: (ret id) ret
28 ret 34 ret
29 } 35 }
30 #{ 36 #{
67 mine setCell: xPrime yPrime self 73 mine setCell: xPrime yPrime self
68 mine setCell: x y empty 74 mine setCell: x y empty
69 x <- xPrime 75 x <- xPrime
70 y <- yPrime 76 y <- yPrime
71 } 77 }
72
73 navigable <- :cur {
74 // need "any" and "all" functions...
75 if: (cur eq: empty) {true} else: {
76 if: (cur eq: earth) {true} else: {
77 if: (cur eq: lambda) {true} else: {
78 if: (cur eq: openLift) {true} else: {
79 false }}}}
80 }
81 78
82 consequenceOf <- :cur { 79 consequenceOf <- :cur {
83 if: (cur eq: lambda) {collected <- collected + 1} 80 if: (cur eq: lambda) {collected <- collected + 1}
84 if: (cur eq: openLift) {mine succeeded!: true} 81 if: (cur eq: openLift) {mine succeeded!: true}
85 } 82 }