Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @DEPENDS console.nx
- object Grid2D [
- rnum,
- cnum,
- grid,
- pgrid,
- border,
- init: method(rnum, cnum) do
- = self.rnum rnum
- = self.cnum cnum
- = self.grid new[rnum]
- for = i 0; < i rnum; = i + i 1 do
- = self.grid[i] new[cnum]
- end
- = self.pgrid new[rnum]
- for = i 0; < i rnum; = i + i 1 do
- = self.pgrid[i] new[cnum]
- end
- = border " "
- for = i 0; < i cnum; = i + i 1 do
- = border .. border "-"
- end
- = self.border .. border " \n"
- end,
- output: method() do
- con_printstr(self.border)
- for = i 0; < i self.rnum; = i + i 1 do
- con_printstr("|")
- for = j 0; < j self.cnum; = j + j 1 do
- if self.grid[i][j]
- con_printstr("O")
- else
- con_printstr(" ")
- end
- con_printstr("|\n")
- end
- con_printstr(self.border)
- end,
- fetch: method(r, c) do
- = r % + self.rnum r self.rnum
- = c % + self.cnum c self.cnum
- return& self.grid[r][c]
- end,
- plan: method() do
- for = i 0; < i self.rnum; = i + i 1 do
- for = j 0; < j self.cnum; = j + j 1 do
- = me self.grid[i][j]
- = neighbors self::getNeighbors(i, j)
- if me do
- if or < neighbors 2 > neighbors 3
- = self.grid[i][j] 2
- end else do
- if == neighbors 3
- = self.grid[i][j] -1
- end
- end
- end
- end,
- act: method() do
- for = i 0; < i self.rnum; = i + i 1 do
- for = j 0; < j self.cnum; = j + j 1 do
- = me self.grid[i][j]
- if == me 2
- = self.grid[i][j] 0
- if == me -1
- = self.grid[i][j] 1
- end
- end
- end,
- getNeighbors: method(r, c) do
- = friendcount 0
- for = i -1; <= i 1; = i + i 1 do
- for = j -1; <= j 1; = j + j 1 do
- if self::fetch(+ r i, + c j)
- if ! & == i 0 == j 0
- = friendcount + friendcount 1
- end
- end
- return friendcount
- end,
- simulate: method() do
- while 1 do
- con_queryln()
- self::output()
- self::plan()
- self::act()
- end
- end,
- activate: method(r, c) do
- = self::fetch(r, c) 1
- end
- ]
- method main() do
- = g new Grid2D(50, 130)
- g::activate(10, 10)
- g::activate(12, 10)
- g::activate(13, 13)
- g::activate(10, 11)
- g::activate(10, 12)
- g::activate(11, 11)
- g::activate(11, 13)
- g::activate(12, 13)
- g::simulate()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement