@adrielus/loopover
v0.1.1
Published
Reliable loopover simulator
Downloads
5
Maintainers
Readme
Loopover
Installation
npm install @adrielus/loopover(There is also an amd build at /dist/bundle.amd.js which uses the Loopover namespace)
Usage
Creating a game
To create a game use the createGame helper and pass it the width and the height of the board:
import { createGame } from '@adrielus/loopover'
// this creates a 3x3 board
const game = createGame(3, 3)The createGame method returns a GameState instance.
Getting the metadata from a state
Each GameState instance has a width and a height prop:
game.width // 3
game.height // 3Iterating over a state
The GameState has a [Symbol.iterator] prop, so you can iterate over it with a for of loop:
for (const piece of game) {
// piece is just an int
}You can also transform it into an array and then use a normal for loop:
const array = [...game]
for (let index = 0; index < array.length; index++) {
const piece = array[index]
}Or you can use the cells getter which will return an array:
for (let index = 0; index < game.cells.length; i++) {
const piece = array[index]
}Applying moves:
The GameState instance has 2 methods for applying moves: moveX and moveY. Both method accept a direction (1 or -1) and a layer.
Example:
If the board is in the following position:
| | | | | --- | --- | --- | | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 |
and you apply:
game.moveX(-1, 1)The board will look like:
| | | | | --- | --- | --- | | 1 | 2 | 3 | | 5 | 6 | 4 | | 7 | 8 | 9 |
Note: both
moveXandmoveYWON'T mutate the original game state, but will return the new state.
Contributing
First, clone this repo:
git clone https://github.com/Mateiadrielrafael/loopover
cd loopoverThen use pnpm to install the dependencies:
pnpm installYou can use the build command to build the package (this is dont automatically by github actions):
pnpm run build