Advertisement
Guest User

Megazeux Debytecode Flood Fill

a guest
Dec 13th, 2010
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. //this version uses its stack properly and stores it in a string
  2. //this can't be used on boards bigger than 256x256 at the moment
  3.  
  4. set mzx_speed 2
  5. set commands (1000000)
  6.  
  7. set $stack ``
  8. set stackMax 0
  9. set x 9
  10. set y 3
  11. set stackedUp 0
  12. set stackedDown 0
  13.  
  14. :goRight
  15. inc x 1
  16. :l
  17. //cycle 1
  18. scrollview position 0 (y-12)
  19. if c?? space p?? (x-1) y #seekLeft
  20. put c0a customblock pb1 x y
  21. if c?? customblock p?? x (y-1) #resetUp
  22. if c?? customblock p?? x (y+1) #resetDown
  23. if c?? space p?? x (y-1) #stackUp
  24. if c?? space p?? x (y+1) #stackDown
  25. if stackMax < $stack.length #stackMax
  26. if c?? space p?? (x+1) y goRight
  27. //cycle 1
  28. :nextStack
  29. if $stack.length = 0 done
  30. set x `$stack.($stack.length -2)`
  31. set y `$stack.($stack.length -1)`
  32. dec $stack 2
  33. if c?? customblock p?? x y nextStack
  34. set stackedUp 0
  35. set stackedDown 0
  36. goto l
  37. :done
  38. resetview
  39. * "~FDONE, used string at maximum length of (stackMax) [stack of (stackMax/2)] and 5 counters"
  40. end
  41.  
  42. :#resetUp
  43. set stackedUp 0
  44. goto #return
  45.  
  46. :#resetDown
  47. set stackedDown 0
  48. goto #return
  49.  
  50. :#stackUp
  51. inc stackedUp 1
  52. if stackedUp != 1 #return
  53. set `$stack.($stack.length)` (x)
  54. set `$stack.($stack.length)` (y-1)
  55. goto #return
  56.  
  57. :#stackDown
  58. inc stackedDown 1
  59. if stackedDown != 1 #return
  60. set `$stack.($stack.length)` (x)
  61. set `$stack.($stack.length)` (y+1)
  62. goto #return
  63.  
  64. :#stackMax
  65. set stackMax $stack.length
  66. goto #return
  67.  
  68. :#seekLeft
  69. :seekLeft
  70. dec x 1
  71. if c?? space p?? (x-1) y seekLeft
  72. goto #return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement