annotate src/sim.tp @ 33:efa82c5e95c2

must commit, too late. does not compile.
author William Morgan <bill@mrgn.org>
date Sun, 15 Jul 2012 03:05:36 -0700
parents 0a55ee387d69
children ac0df071afe7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
1 {
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
2 null <- #{}
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
3
12
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
4 eachbyte <- :string action {
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
5 strLen <- string byte_length:
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
6 index <- 0
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
7 while: {index < strLen} do: {
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
8 element <- (string byte: index)
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
9 action: index element
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
10 index <- index + 1
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
11 }
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
12 }
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
13
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
14 debugLog <- :str {
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
15 os write: 2 str
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
16 }
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
17
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
18 makeCellTypes <- {
31
f7a1daaec925 Use dictionary
Mike Pavone <pavone@retrodev.com>
parents: 30
diff changeset
19 typedict <- dict linear
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
20 new <- :idStr {
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
21 ret <- #{
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
22 id <- (idStr byte: 0)
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
23 str <- idStr
10
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
24 isrobot <- { false }
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
25 }
31
f7a1daaec925 Use dictionary
Mike Pavone <pavone@retrodev.com>
parents: 30
diff changeset
26 typedict set: (ret id) ret
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
27 ret
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
28 }
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
29 #{
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
30 find <- :id {
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
31 if: id = ("R" byte: 0) { robot: } else: {
31
f7a1daaec925 Use dictionary
Mike Pavone <pavone@retrodev.com>
parents: 30
diff changeset
32 typedict get: id withDefault: empty
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
33 }
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
34 }
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
35 wall <- new: "#"
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
36 empty <- new: " "
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
37 earth <- new: "."
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
38 rock <- new: "*"
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
39 lambda <- new: "\\"
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
40 closedLift <- new: "L"
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
41 openLift <- new: "O"
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
42 newline <- new: "\n"
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
43 robot <- {
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
44 ret <- #{
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
45 id <- ("R" byte: 0)
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
46 str <- "R"
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
47 x <- 0
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
48 y <- 0
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
49 isrobot <- { true }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
50 collected <- 0
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
51 heldBreath <- 0
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
52 razors <- 0
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
53 busted <- false
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
54 mine <- null
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
55 doCmd <- :cmd {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
56 action <- commands get: cmd
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
57 action:
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
58 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
59 move <- :xDelta yDelta {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
60 xPrime <- x + xDelta
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
61 yPrime <- y + yDelta
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
62
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
63 writeMove <- {
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
64 mine setCell: xPrime yPrime self
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
65 mine setCell: x y empty
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
66 x <- xPrime
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
67 y <- yPrime
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
68 }
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
69
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
70 navigable <- {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
71 // need "any" and "all" functions...
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
72 if: self = empty {true} else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
73 if: self = earth {true} else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
74 if: self = lambda {true} else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
75 if: self = openLift {true} else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
76 false }}}}
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
77 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
78
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
79 consequenceOf <- {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
80 if: self = lambda {collected <- collected + 1}
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
81 if: self = openLift {mine succeeded!: true}
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
82 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
83
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
84 destination <- mine getCell: xPrime yPrime
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
85
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
86 if: (destination navigable: ) {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
87 consequenceOf: destination
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
88 writeMove:
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
89 } else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
90 if: destination = rock {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
91 xPrimePrime <- xDelta * 2 + x
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
92 rockDestination <- mine getCell: xPrimePrime y
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
93 if: rockDestination = empty {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
94 mine setCell: xPrimePrime y rock
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
95 writeMove:
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
96 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
97 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
98 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
99
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
100 }
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
101 }
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
102 commands <- dict linear
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
103 commands set: "L" {move: -1 0 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
104 commands set: "R" {move: 1 0 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
105 commands set: "U" {move: 0 1 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
106 commands set: "D" {move: 0 -1 }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
107 //commands set: "A" {mine ended!: true}
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
108 ret
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
109 }
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
110 }
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
111 }
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
112 #{
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
113
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
114 cellTypes <- makeCellTypes:
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
115
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
116 state <- #{
6
86cdb799f950 unbarfed some things
William Morgan <bill@mrgn.org>
parents: 5
diff changeset
117 new <- :in_grid in_width in_height {
10
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
118 nextGrid <- #[]
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
119 robot <- null
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
120 endreached <- false
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
121 ret <- #{
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
122 grid <- in_grid
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
123 width <- in_width
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
124 height <- in_height
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
125 calcIndex <- :x y { x + y * width }
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
126 calcX <- :index {index % width}
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
127 calcY <- :index {index / width}
10
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
128 setCell <- :x y val {
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
129 grid set: (calcIndex: x y) val
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
130 }
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
131 getCell <- :x y {
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
132 grid get: (calcIndex: x y)
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
133 }
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
134 updatePos <- :obj Index {
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
135 obj x!: (calcX: Index)
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
136 obj y!: (calcY: Index)
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
137 }
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
138 water <- 0
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
139 flooding <- 0
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
140 waterproof <- 10
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
141 moves <- 0
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
142 ended <- {endreached}
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
143 succeeded <- false
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
144 doUpdate <- {
12
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
145 true
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
146 }
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
147 advance <- :roboCmd {
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
148 endreached <- roboCmd = "A"
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
149 robot doCmd: roboCmd inMine: self
6
86cdb799f950 unbarfed some things
William Morgan <bill@mrgn.org>
parents: 5
diff changeset
150 moves <- moves + 1
7
1bd46f854dbb progress on sim, celltypes as objects
William Morgan <bill@mrgn.org>
parents: 6
diff changeset
151 doUpdate:
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
152 self
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
153 }
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
154 printGrid <- {
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
155 cur <- (grid length) - width
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
156 col <- 0
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
157 while: {cur >= 0} do: {
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
158 os write: 2 ((grid get: cur) str)
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
159 cur <- cur + 1
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
160 col <- col + 1
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
161 if: col = width {
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
162 col <- 0
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
163 cur <- cur - (width + width)
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
164 os write: 2 "\n"
23
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
165 }
75a005b210c5 almost got movement
William Morgan <bill@mrgn.org>
parents: 17
diff changeset
166 }
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
167 }
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
168 }
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
169 foreach: in_grid :index el{
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
170 nextGrid append: el
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
171 if: (el isrobot) {
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
172 robot <- el
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
173 robot mine!: ret
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
174 ret updatePos: robot index
30
031d46ff76a9 minor clean up to use 'if' and 'not'
William Morgan <bill@mrgn.org>
parents: 29
diff changeset
175 }
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
176
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
177
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
178 // adding a 'new' method to robot and doing this instead
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
179 // wolud allow me to treat robots and other cellTypes equaly
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
180 // particularly for adding methods or state to other cellTypess.
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
181 //
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
182 // if: (el = (cellTypes robot)) {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
183 // robot <- el new:
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
184 // (ret grid) set: index robot
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
185 // robot mine!: ret
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
186 // ret updatePos: robot index
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
187 // nextGrid append: el
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
188 // } else: {
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
189 // nextGrid append: el
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
190 // }
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
191
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
192 }
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
193 ret
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
194 }
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
195
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
196 fromStr <- :str {
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
197 strLen <- str byte_length:
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
198 maxCol <- 0
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
199 nl <- (cellTypes newline) id
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
200 blank <- cellTypes empty
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
201 lines <- #[]
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
202 curline <- #[]
12
6ef6dc8ab95e Get simulator compiling
William Morgan <bill@mrgn.org>
parents: 11
diff changeset
203 eachbyte: str :index element {
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
204 if: element = nl {
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
205 col <- curline length
33
efa82c5e95c2 must commit, too late. does not compile.
William Morgan <bill@mrgn.org>
parents: 32
diff changeset
206 maxCol <- if: col > maxCol {col} else: {maxCol}
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
207 lines append: curline
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
208 curline <- #[]
10
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
209 } else: {
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
210 curline append: (cellTypes find: element)
10
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
211 }
370a1eeb8812 merge and stuff
William Morgan <bill@mrgn.org>
parents: 9
diff changeset
212 }
13
c92633098f1d simulator now properly parses map and accepts input until A is sent to it over stdin
Mike Pavone <pavone@retrodev.com>
parents: 12
diff changeset
213 grid <- #[]
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
214 cur <- (lines length) - 1
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
215 while: { cur >= 0 } do: {
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
216 curline <- (lines get: cur)
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
217 foreach: curline :idx el {
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
218 grid append: el
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
219 }
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
220 extra <- maxCol - (curline length)
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
221 while: { extra > 0 } do: {
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
222 grid append: blank
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
223 extra <- extra - 1
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
224 }
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
225 cur <- cur - 1
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
226 }
32
0a55ee387d69 Change grid order
Mike Pavone <pavone@retrodev.com>
parents: 31
diff changeset
227 new: grid maxCol (lines length)
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
228 }
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
229 }
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
230
20
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
231 readFd <- :fd {
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
232 if: fd < 0 { "" } else: {
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
233 cur <- ""
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
234 part <- ""
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
235 while: {
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
236 part <- os read: fd 128
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
237 part != ""
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
238 } do: {
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
239 cur <- cur . part
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
240 }
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
241 cur
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
242 }
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
243 }
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
244
20
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
245 readFile <- :path {
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
246 fd <- os open: path (os O_RDONLY)
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
247 out <- readFd: fd
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
248 os close: fd
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
249 out
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
250 }
50a456168c25 Split readFd out of readFile for use in lifter. Add code to read map from stdin to lifter using code in sim
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
251
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
252 getMove <- {
29
d9f1a063a466 interactive mode works
William Morgan <bill@mrgn.org>
parents: 28
diff changeset
253 ret <- os read: 0 1
d9f1a063a466 interactive mode works
William Morgan <bill@mrgn.org>
parents: 28
diff changeset
254 while: {ret = "\n"} do: {
d9f1a063a466 interactive mode works
William Morgan <bill@mrgn.org>
parents: 28
diff changeset
255 ret <- os read: 0 1
d9f1a063a466 interactive mode works
William Morgan <bill@mrgn.org>
parents: 28
diff changeset
256 }
d9f1a063a466 interactive mode works
William Morgan <bill@mrgn.org>
parents: 28
diff changeset
257 ret
3
bb29dcd46cbf Put dummy code in placeholder source files. Create makefile.
Mike Pavone <pavone@retrodev.com>
parents: 0
diff changeset
258 }
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
259
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
260 main <- :args {
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
261 if: (args length) < 2 {
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
262 print: "usage: sim filename\n"
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
263 } else: {
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
264 verbose <- true
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
265 text <- readFile: (args get: 1)
14
26cfb964fe81 removed debug printing
William Morgan <bill@mrgn.org>
parents: 13
diff changeset
266 print: text
17
998ef2173f28 colse stdout file descriptor
William Morgan <bill@mrgn.org>
parents: 14
diff changeset
267 os close: 1
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
268 simState <- state fromStr: text
30
031d46ff76a9 minor clean up to use 'if' and 'not'
William Morgan <bill@mrgn.org>
parents: 29
diff changeset
269 while: { not: (simState ended: ) } do: {
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
270 simState advance: (getMove: )
25
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
271 if: verbose {
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
272 simState printGrid
a224dc43877f major progress! ...robot always moves down though
William Morgan <bill@mrgn.org>
parents: 24
diff changeset
273 }
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
274 }
5
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
275 }
be946b2a2cbc initial barf into simulator file
William Morgan <bill@mrgn.org>
parents: 3
diff changeset
276 }
8
5941e6b3684c Read map file in simulator
Mike Pavone <pavone@retrodev.com>
parents: 6
diff changeset
277
3
bb29dcd46cbf Put dummy code in placeholder source files. Create makefile.
Mike Pavone <pavone@retrodev.com>
parents: 0
diff changeset
278 }
11
f28e465e9ee6 tried to unf*ck, ashamed rebarfing
William Morgan <bill@mrgn.org>
parents: 10
diff changeset
279 }