{"_id":"2d-board","_rev":"6-c3b026fd7ed711ea35d3aeb127f55c74","name":"2d-board","description":"Simple array wrapper for 2-dimensional grid-based games","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"2d-board","version":"1.0.0","description":"Simple array wrapper for 2-dimensional grid-based games","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"keywords":["array","2d","grid","tile","game","board","arena"],"author":{"name":"Michael Liu"},"license":"ISC","bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"homepage":"https://github.com/quasimik/2d-board#readme","gitHead":"d805fc1d49bfe3575f3632cb89904869ff92cf81","_id":"2d-board@1.0.0","_shasum":"1da56956bc2dd87339e46a538ea77d1df254d545","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"quasimik","email":"mike666234@gmail.com"},"dist":{"shasum":"1da56956bc2dd87339e46a538ea77d1df254d545","tarball":"https://registry.npmjs.org/2d-board/-/2d-board-1.0.0.tgz","integrity":"sha512-Cd0wLqiE2ZKJgIvuo7qqs02vdcTKXxBloYCdAyNBcd5i/nf1SitJhDNJtu6gXiInoAKcEX2G4LsaAU+R5jwtxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDaYCZYvzb6jcGKbDgvK2yMh+Aqh2r4Df+y96Cxca5uQIgcHFqNv+NKg/mAaJJVafYcgE809sa2dV8GNmNJaouPx8="}]},"maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/2d-board-1.0.0.tgz_1491441653580_0.5148372640833259"}},"1.1.0":{"name":"2d-board","version":"1.1.0","description":"Simple array wrapper for 2-dimensional grid-based games","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"keywords":["array","2d","grid","tile","game","board","arena"],"author":{"name":"Michael Liu"},"license":"ISC","bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"homepage":"https://github.com/quasimik/2d-board#readme","gitHead":"1afa5b36eb270377a0f21be53ddbd66dea713029","_id":"2d-board@1.1.0","_shasum":"ca9a60a85c468a7cf0992bcdff839e82599c07c7","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"quasimik","email":"mike666234@gmail.com"},"dist":{"shasum":"ca9a60a85c468a7cf0992bcdff839e82599c07c7","tarball":"https://registry.npmjs.org/2d-board/-/2d-board-1.1.0.tgz","integrity":"sha512-kAtY43P9tPQxsWTZ12vSkp62VQMe95eLSVw9Rd/DdAdNZar6+H+nU83F19+YRyD7elv1vzEv/sQQ88rff2qxGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrUYM9vlstquua4JjfjSjmM8+FGz33l3jRALD2JqGuawIhAIeD6AKOhO+hQi/TMKNn3I1mCoaPcyRv2NHP0V3WFn5T"}]},"maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/2d-board-1.1.0.tgz_1491442619935_0.07344360579736531"}},"1.1.1":{"name":"2d-board","version":"1.1.1","description":"Simple array wrapper for 2-dimensional grid-based games","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"keywords":["array","2d","grid","tile","game","board","arena"],"author":{"name":"Michael Liu"},"license":"ISC","bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"homepage":"https://github.com/quasimik/2d-board#readme","gitHead":"dbb43a17d00d6d4a3c667d555ccea22f3b127d46","_id":"2d-board@1.1.1","_shasum":"edbd3b7f3413c5605da91cea0116a3617cd722bb","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"quasimik","email":"mike666234@gmail.com"},"dist":{"shasum":"edbd3b7f3413c5605da91cea0116a3617cd722bb","tarball":"https://registry.npmjs.org/2d-board/-/2d-board-1.1.1.tgz","integrity":"sha512-OMkTsKxTDFkSFeBe0ZFfmkxKIPb9/CS/qM9WP9jLEqFTrbrHx6im3+COZLreNVQZ6I37PNXPY5rVfSOjyYpFGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCF1/d8/wrvV7CVOB1cp4KbbCSniX/CxjL0XJSRm99HZwIgPr8P7sbkwJToyZGSlUTkmHxCSqzyCVR2FVS0CTnmqPk="}]},"maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/2d-board-1.1.1.tgz_1491442989569_0.14003022573888302"}},"2.0.0":{"name":"2d-board","version":"2.0.0","description":"Simple array wrapper for 2-dimensional grid-based games","main":"index.js","scripts":{"start":"node ./test.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"keywords":["array","2d","grid","tile","game","board","arena"],"author":{"name":"Michael Liu"},"license":"ISC","bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"homepage":"https://github.com/quasimik/2d-board#readme","gitHead":"9afa51b3df0b003033830621df7ba55daaed2419","_id":"2d-board@2.0.0","_shasum":"71c6d05a255a0af0d8314155fa845278c6c47f4c","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"quasimik","email":"mike666234@gmail.com"},"dist":{"shasum":"71c6d05a255a0af0d8314155fa845278c6c47f4c","tarball":"https://registry.npmjs.org/2d-board/-/2d-board-2.0.0.tgz","integrity":"sha512-8Sz1Tdl0LGcl+TfK0n/GxIXlkAWoMYRCKZb9dF8XMF5kuJdb7Q2TUSmHpSTaUDSIUEgyie3AtASZl0qpHGr9Cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCQn1ZwlKc6IdkdKvZxcHB+nC9zLk2otdNhAw5J5fOyrAIgbIga5r//GufrG64RqRlsEpKh3q6UOtkrulfFqYwG01c="}]},"maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/2d-board-2.0.0.tgz_1494205351620_0.6293819849379361"}},"2.0.1":{"name":"2d-board","version":"2.0.1","description":"Simple array wrapper for 2-dimensional grid-based games","main":"index.js","scripts":{"start":"node ./test.js","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"keywords":["array","2d","grid","tile","game","board","arena"],"author":{"name":"Michael Liu"},"license":"ISC","bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"homepage":"https://github.com/quasimik/2d-board#readme","gitHead":"3f43601c0fa83bf6037b8f2fd736128514c23e47","_id":"2d-board@2.0.1","_shasum":"02b3b37673aa6946657d3abc143dbe68956a76ab","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.7.3","_npmUser":{"name":"quasimik","email":"mike666234@gmail.com"},"dist":{"shasum":"02b3b37673aa6946657d3abc143dbe68956a76ab","tarball":"https://registry.npmjs.org/2d-board/-/2d-board-2.0.1.tgz","integrity":"sha512-QRmbv3iX9vkdOFpX/fgwquQf1IN2Uik2eGU3xzooWFSi25Vh7fFoOhJgFQeWU/Kpk/xEM2l7+U2GHkXCMnhNgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBHqTxe+sMf0Kyy2j96Rd5E6PIHZec/zDqDXvXX/qyzhAiBdRqVQ6nJFGoXB3Hu94CcXnw1jDACXI2pB8QFSGC9dHQ=="}]},"maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/2d-board-2.0.1.tgz_1494206254600_0.17538997251540422"}}},"readme":"# 2d-board\nSimple array wrapper for 2-dimensional grid-based games\n\n## Usage\n\n### Basic Usage\n\n```javascript\n// Get and set cells\nvar cell = [ x, y ];\nboard.val(cell);\nboard.val(cell, val);\n\n// Set out-of-bounds behavior for step functions\nboard.setoob(\"OOB_NEXT\");\n\n// Step through cells\nvar next = board.right(cell);\n```\n\n### Advanced Usage\n\n```javascript\n// Get and set cols and rows\nboard.col(x);\nboard.col(x, vals);\nboard.row(y);\nboard.row(y, vals);\n\n// Get and set entire board\nboard.cols(x);\nboard.cols(x, vals);\nboard.rows(y);\nboard.rows(y, vals);\n\n// Merge boards\nboard1.cols(board2.cols());\n```\n\n## Documentation\n\n### Create a new 3 * 2 board:\n\n```javascript\nvar createBoard = require(\"2d-board\");\nvar board = createBoard(3, 2);\n```\n\n### Cell Operations\n\n```javascript\nvar cell = [ 0, 0 ];\nboard.val(cell, 'X'); // Set cell at (0, 0) to 'X'\nvar val = board.val(cell); // Get cell at (0, 0)\nconsole.log(val); // 'X'\n```\n\n### Step Functions\n\nGiven the board:\n\n```\nA B C\nD E F\nG H I\n```\n\nStep across cols and rows:\n\n```javascript\nvar cell = [ 1, 1 ]; // 'E'\nvar next = board.up(cell); // 'E' -> 'B'\nif (next !== null) cell = next; // Check for OOB\nelse { /* Handle it */ }\n```\n\nStep functions are `up`, `down`, `left`, `right`, and they return `null` if out of bounds.\n\nYou can set the oob flag to define out-of-bounds behavior:\n\n```javascript\n// A B C\n// D E F\n// G H I\n\nboard.setoob(\"OOB_SAME\");\nvar cell = [ 3, 0 ]; // 'F'\nvar next = board.right(cell); // 'F' -> 'D'\n\nboard.setoob(\"OOB_NEXT\");\nvar cell = [ 2, 0 ]; // 'F'\nvar next = board.right(cell); // 'F' -> 'G'\n```\n\nThe available options are:\n\n* `\"OOB_NULL\"` to return null on oob (default)\n* `\"OOB_STICK\"` to return the same coordinates on oob\n* `\"OOB_SAME\"` to wrap to the same row or col on oob\n* `\"OOB_NEXT\"` to wrap to the next row or col on oob\n\n### Row and Column Operations\n\nTo set an entire row or column:\n\n```javascript\nvar row0 = [ 0, 1, 2 ];\nvar row1 = [ 3, 4, 5 ];\nvar col1 = [ 'A', 'B' ];\nboard.row(0, row0);\nboard.row(1, row1);\nboard.col(1, col1);\n```\n\nThis yields the board:\n\n```\n0 A 2\n3 B 5\n```\n\nTo get an entire row or col:\n\n```javascript\nvar row = board.row(0);\nvar col = board.col(2);\nconsole.log(row); // [ 0, 'A', 2 ]\nconsole.log(col); // [ 2, 5 ]\n```\n\n### Board Operations\n\nTo set the entire board:\n\n```javascript\nvar vals = [\n  [ 0, 1, 2 ],\n  [ 3, 4, 5 ]\n];\nboard.rows(vals); // Fill the board in rows\n\nvar vals = [\n  [ 0, 3 ],\n  [ 1, 4 ],\n  [ 2, 5 ]\n];\nboard.cols(vals); // Fill the board in cols\n```\n\nThe two operations above yield the same board:\n\n```\n0 1 2\n3 4 5\n```\n\nTo get the entire board:\n\n```javascript\nvar rows = board.rows(); // Retrieve all rows\nvar cols = board.cols(); // Retrieve all cols\nconsole.log(rows); // [[ 0, 1, 2 ], [ 3, 4, 5 ]]\nconsole.log(cols); // [[ 0, 3 ], [ 1, 4 ], [ 2, 5 ]]\n```\n\n## Features & Notes\n\n* Permissive set methods. Handles any given array up to capacity, ignoring the rest.\n\n```javascript\nvar board = createNewBoard(3, 1);\nboard.row(0, [ 0, 1, 2, 3, 4 ]);\n\n// Yields the board:\n// 0 1 2\n// 3 and 4 are ignored.\n```\n\n* Undefined values are skipped.\n\n```javascript\n// A B C\n// D E F\n// G H I\n\nboard.row(1, [ '#', , '#' ]);\n\n// Yields the board:\n// A B C\n// # E #\n// G H I\n```\n\n* As usual, array contents can be objects. Types can be mixed.\n\n```javascript\nvar item = { 'number': 4, 'elements': [ 123, 'abc' ] };\nvar row = [ 789, item, 'xyz' ];\nvar board = createNewBoard(3, 1);\nboard.row(0, row);\n```\n\n* Due to the internal representation of the array, references to rows are more efficient than references to cols.\n\n```javascript\n// Assume a board with equal rows and cols, and homogeneous elements\n\n// This is more efficient\nvar row = board.row(0);\n\n// This is less efficient\nvar col = board.col(0);\n```\n\n## Future Developments\n\n* Custom comparator function for board merging\n* Hashmap for board representation, instead of using array\n","maintainers":[{"name":"quasimik","email":"mike666234@gmail.com"}],"time":{"modified":"2022-06-12T14:06:50.730Z","created":"2017-04-06T01:20:53.896Z","1.0.0":"2017-04-06T01:20:53.896Z","1.1.0":"2017-04-06T01:37:00.225Z","1.1.1":"2017-04-06T01:43:11.417Z","2.0.0":"2017-05-08T01:02:31.856Z","2.0.1":"2017-05-08T01:17:36.450Z"},"homepage":"https://github.com/quasimik/2d-board#readme","keywords":["array","2d","grid","tile","game","board","arena"],"repository":{"type":"git","url":"git+https://github.com/quasimik/2d-board.git"},"author":{"name":"Michael Liu"},"bugs":{"url":"https://github.com/quasimik/2d-board/issues"},"license":"ISC","readmeFilename":"README.md"}