Skip to the content

Houseki宝石

Run five native gem and stone engines, play measured challenges and lessons, and save deterministic games.

Houseki (宝石) is Japanese for a gem or precious stone. About the name

Contents

Reference · Magnetic Blocks

settlefunction

Settle surviving gems with the chosen floor rule and retain valid stable-id bonds.

Import it

import { settle } from "@johnmorrisdotca/houseki/magnetic-blocks";

Definition

function settle(initial: readonly (Gem | null)[], bonds: readonly Bond[], floor: Floor, width: number, height: number, mask: readonly boolean[]): { readonly board: readonly (Gem | null)[]; readonly bonds: readonly Bond[]; }

Parameters

NameTypeDescription
initialreadonly (Gem | null)[]

The row-major starting board for gravity settlement.

bondsreadonly Bond[]

Native stable-id bonds connecting surviving gems.

floorFloor

The native calm or magnetic floor rule to apply.

widthnumber

The native board width in cells.

heightnumber

The native board height in cells.

maskreadonly boolean[]

The row-major active-cell mask; false cells cannot hold gems.

Returns

{ readonly board: readonly (Gem | null)[]; readonly bonds: readonly Bond[]; }

Settle surviving gems with the chosen floor rule and retain valid stable-id bonds. Nested null values denote empty board cells, absent active pieces, unselected tools or outcomes not yet reached; optional undefined fields are absent until applicable.

Examples

import { createGame, settle } from "@johnmorrisdotca/houseki/magnetic-blocks";

const state=createGame({seed:"docs"});
console.log(settle(state.board,state.bonds,"calm",state.settings.width,state.settings.height,state.settings.mask).board.length);
200

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/houseki 0.4.2.