1
Fork 0

typescript(loopover): chore: added a readme

Signed-off-by: prescientmoon <git@moonythm.dev>
This commit is contained in:
Matei Adriel 2019-11-25 17:56:02 +02:00 committed by prescientmoon
parent a156a02f94
commit a5ecfc656f
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4
2 changed files with 110 additions and 0 deletions

View file

@ -0,0 +1,110 @@
# Loopover
## Installation
```sh
npm install @adrielus/loopover
```
## Usage
### Creating a game
To create a game use the `createGame` helper and pass it the `width` and the `height` of the board:
```ts
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:
```ts
game.width // 3
game.height // 3
```
### Iterating over a state
The `GameState` has a `[Symbol.iterator]` prop, so you can iterate over it with a for of loop:
```ts
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:
```ts
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:
```ts
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:
```ts
game.moveX(-1, 1)
```
The board will look like:
| | | |
| --- | --- | --- |
| 1 | 2 | 3 |
| 5 | 6 | 4 |
| 7 | 8 | 9 |
> Note: both `moveX` and `moveY` **_WON'T_** mutate the original game state, but will return the new state.
# Contributing
First, clone this repo:
```sh
git clone https://github.com/Mateiadrielrafael/loopover
cd loopover
```
Then use **_pnpm_** to install the dependencies:
```sh
pnpm install
```
You can use the `build` command to build the package (this is dont automatically by github actions):
```sh
pnpm run build
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB