Advertisement
Guest User

Untitled

a guest
Aug 28th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. @DEPENDS console.nx
  2.  
  3. object Grid2D [
  4. rnum,
  5. cnum,
  6. grid,
  7. pgrid,
  8. border,
  9.  
  10. init: method(rnum, cnum) do
  11. = self.rnum rnum
  12. = self.cnum cnum
  13. = self.grid new[rnum]
  14. for = i 0; < i rnum; = i + i 1 do
  15. = self.grid[i] new[cnum]
  16. end
  17. = self.pgrid new[rnum]
  18. for = i 0; < i rnum; = i + i 1 do
  19. = self.pgrid[i] new[cnum]
  20. end
  21. = border " "
  22. for = i 0; < i cnum; = i + i 1 do
  23. = border .. border "-"
  24. end
  25. = self.border .. border " \n"
  26. end,
  27.  
  28. output: method() do
  29. con_printstr(self.border)
  30. for = i 0; < i self.rnum; = i + i 1 do
  31. con_printstr("|")
  32. for = j 0; < j self.cnum; = j + j 1 do
  33. if self.grid[i][j]
  34. con_printstr("O")
  35. else
  36. con_printstr(" ")
  37. end
  38. con_printstr("|\n")
  39. end
  40. con_printstr(self.border)
  41. end,
  42.  
  43. fetch: method(r, c) do
  44. = r % + self.rnum r self.rnum
  45. = c % + self.cnum c self.cnum
  46. return& self.grid[r][c]
  47. end,
  48.  
  49. plan: method() do
  50. for = i 0; < i self.rnum; = i + i 1 do
  51. for = j 0; < j self.cnum; = j + j 1 do
  52. = me self.grid[i][j]
  53. = neighbors self::getNeighbors(i, j)
  54. if me do
  55. if or < neighbors 2 > neighbors 3
  56. = self.grid[i][j] 2
  57. end else do
  58. if == neighbors 3
  59. = self.grid[i][j] -1
  60. end
  61. end
  62. end
  63. end,
  64.  
  65. act: method() do
  66. for = i 0; < i self.rnum; = i + i 1 do
  67. for = j 0; < j self.cnum; = j + j 1 do
  68. = me self.grid[i][j]
  69. if == me 2
  70. = self.grid[i][j] 0
  71. if == me -1
  72. = self.grid[i][j] 1
  73. end
  74. end
  75. end,
  76.  
  77. getNeighbors: method(r, c) do
  78. = friendcount 0
  79. for = i -1; <= i 1; = i + i 1 do
  80. for = j -1; <= j 1; = j + j 1 do
  81. if self::fetch(+ r i, + c j)
  82. if ! & == i 0 == j 0
  83. = friendcount + friendcount 1
  84. end
  85. end
  86. return friendcount
  87. end,
  88.  
  89. simulate: method() do
  90. while 1 do
  91. con_queryln()
  92. self::output()
  93. self::plan()
  94. self::act()
  95. end
  96. end,
  97.  
  98. activate: method(r, c) do
  99. = self::fetch(r, c) 1
  100. end
  101. ]
  102.  
  103. method main() do
  104. = g new Grid2D(50, 130)
  105. g::activate(10, 10)
  106. g::activate(12, 10)
  107. g::activate(13, 13)
  108. g::activate(10, 11)
  109. g::activate(10, 12)
  110. g::activate(11, 11)
  111. g::activate(11, 13)
  112. g::activate(12, 13)
  113. g::simulate()
  114. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement