board.lua 689 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. -- A minimal 2D array helper class
  2. local Board = {}
  3. function Board.fill(board, w, h, v) -- Can initialize or grow (but not shrink) board
  4. for x=1,w do
  5. local col = board[x]
  6. if not col then
  7. col = {}
  8. board[x] = col
  9. end
  10. for y=1,h do
  11. col[y] = v
  12. end
  13. end
  14. return board
  15. end
  16. function Board.size(board) -- Return width, height
  17. if not board then return 0,0 end
  18. return #board, board[1] and #board[1] or 0
  19. end
  20. function Board.get(board, x, y)
  21. local col = board[x]
  22. if col then
  23. return col[y]
  24. end
  25. return nil
  26. end
  27. function Board.set(board, x, y, v)
  28. local xs, ys = Board.size(board)
  29. if x >= 1 and y >= 1 and x <= xs and y <= ys then
  30. board[x][y] = v
  31. end
  32. end
  33. return Board