1
Fork 0
solar-conflux/typescript/loopover
Matei Adriel 43e657ac90
typescript(loopover): 0.1.0
Signed-off-by: prescientmoon <git@moonythm.dev>
2019-11-25 18:05:09 +02:00
..
.vscode typescript(loopover): feat: added the moveX method to the GameState class 2019-11-25 17:08:07 +02:00
assets typescript(loopover): chore: added a readme 2019-11-25 17:56:02 +02:00
src typescript(loopover): chore: removed the testing stuff (for now) 2019-11-25 17:34:29 +02:00
.gitignore typescript(loopover): chore: initial rollup setup 2019-11-25 09:33:33 +02:00
.prettierrc typescript(loopover): chore: initial rollup setup 2019-11-25 09:33:33 +02:00
LICENSE typescript(loopover): chore: initial rollup setup 2019-11-25 09:33:33 +02:00
package.json typescript(loopover): 0.1.0 2019-11-25 18:05:09 +02:00
pnpm-lock.yaml typescript(loopover): chore: removed the testing stuff (for now) 2019-11-25 17:34:29 +02:00
README.md typescript(loopover): chore: added badges to the readme 2019-11-25 18:04:25 +02:00
rollup.config.ts typescript(loopover): chore: initial rollup setup 2019-11-25 09:33:33 +02:00
tsconfig.json typescript(loopover): feat: added the moveX method to the GameState class 2019-11-25 17:08:07 +02:00

npm (scoped) npm bundle size (scoped) forthebadge

Loopover

Installation

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:

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 // 3

Iterating 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 moveX and moveY WON'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 loopover

Then use pnpm to install the dependencies:

pnpm install

You can use the build command to build the package (this is dont automatically by github actions):

pnpm run build