Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hughsk/flood-fill
A simple 2D JavaScript flood fill.
https://github.com/hughsk/flood-fill
Last synced: 12 days ago
JSON representation
A simple 2D JavaScript flood fill.
- Host: GitHub
- URL: https://github.com/hughsk/flood-fill
- Owner: hughsk
- Created: 2013-06-28T04:07:52.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2013-06-29T11:30:00.000Z (over 11 years ago)
- Last Synced: 2024-10-17T16:37:43.633Z (22 days ago)
- Language: JavaScript
- Size: 113 KB
- Stars: 24
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# flood-fill #
A simple 2D [flood fill](http://en.wikipedia.org/wiki/Flood_fill) for use with
[ndarrays](http://github.com/mikolalysenko/ndarray).You could use this to re-implement Microsoft Paint's bucket fill in
JavaScript, or in procedural dungeon generation to identify disconnected rooms.[![flood fill](https://raw.github.com/hughsk/flood-fill/master/example.gif)](http://en.wikipedia.org/wiki/File:Recursive_Flood_Fill_4_%28aka%29.gif)
## Installation ##
``` bash
npm install flood-fill
```## Usage ##
### `require('flood-fill')(ndarray, x, y, fillValue)` ###
Fills the array with `fillValue`, starting from the position at `(x, y)`.
This will also return an object with some very basic metrics for you to use:
* `area`: the total amount of cells filled.
* `hi`: the highest x/y positions filled.
* `lo`: the lowest x/y positions filled.Note that `hi` and `lo` may not have been filled themselves.
``` javascript
var fill = require('flood-fill')
var zero = require('zeros')var grid = zero([50, 50])
var height = grid.shape[1]
var width = grid.shape[0]for (var x = 0; x < 50; x += 1) grid.set(x, 10, 1)
for (var x = 0; x < 50; x += 1) grid.set(x, 21, 1)
for (var y = 0; y < 50; y += 1) grid.set(10, y, 1)
for (var y = 0; y < 50; y += 1) grid.set(22, y, 1)fill(grid, 30, 19, 2)
for (var y = 0; y < height; y += 1) {
for (var x = 0; x < width; x += 1) {
process.stdout.write(grid.get(x, y) ? '#' : ' ')
}
console.log()
}
```