Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //this version uses its stack properly and stores it in a string
- //this can't be used on boards bigger than 256x256 at the moment
- set mzx_speed 2
- set commands (1000000)
- set $stack ``
- set stackMax 0
- set x 9
- set y 3
- set stackedUp 0
- set stackedDown 0
- :goRight
- inc x 1
- :l
- //cycle 1
- scrollview position 0 (y-12)
- if c?? space p?? (x-1) y #seekLeft
- put c0a customblock pb1 x y
- if c?? customblock p?? x (y-1) #resetUp
- if c?? customblock p?? x (y+1) #resetDown
- if c?? space p?? x (y-1) #stackUp
- if c?? space p?? x (y+1) #stackDown
- if stackMax < $stack.length #stackMax
- if c?? space p?? (x+1) y goRight
- //cycle 1
- :nextStack
- if $stack.length = 0 done
- set x `$stack.($stack.length -2)`
- set y `$stack.($stack.length -1)`
- dec $stack 2
- if c?? customblock p?? x y nextStack
- set stackedUp 0
- set stackedDown 0
- goto l
- :done
- resetview
- * "~FDONE, used string at maximum length of (stackMax) [stack of (stackMax/2)] and 5 counters"
- end
- :#resetUp
- set stackedUp 0
- goto #return
- :#resetDown
- set stackedDown 0
- goto #return
- :#stackUp
- inc stackedUp 1
- if stackedUp != 1 #return
- set `$stack.($stack.length)` (x)
- set `$stack.($stack.length)` (y-1)
- goto #return
- :#stackDown
- inc stackedDown 1
- if stackedDown != 1 #return
- set `$stack.($stack.length)` (x)
- set `$stack.($stack.length)` (y+1)
- goto #return
- :#stackMax
- set stackMax $stack.length
- goto #return
- :#seekLeft
- :seekLeft
- dec x 1
- if c?? space p?? (x-1) y seekLeft
- goto #return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement