Skip to the content

Tsunagi繋ぎ

Join each pair with a separate line and fill the board, through fixed levels or seeded puzzles.

Tsunagi means joining in Japanese. About the name

Contents

Reference · SVG board

drawTsunagiPairfunction

What one pair's line is made of in a drawing, for a page that keeps a drawing in its DOM and redraws only the pair whose line changed: its washes and its little marbles, each to go inside the group of that pair's (.tsu-washes > [data-pair] and .tsu-beads > [data-pair], and .tsu-ghosts > [data-pair] on a board that wraps), and its line (a .tsu-line for the .tsu-lines group, to replace any of that pair's). id is the drawing's own (<svg>'s paper gradient is <id>-paper), so the pieces use its gradients. Boards with bridges are drawn whole, since a bridge's deck and the lines under it depend on every line.

Import it

import { drawTsunagiPair } from "@johnmorrisdotca/tsunagi/draw";

Definition

function drawTsunagiPair(layout: LinkLayout, pair: number, id: string, options?: TsunagiDrawOptions): { washes: string; line: string; beads: string; ghosts: string; }

Parameters

NameTypeDescription
layoutLinkLayout

The decoded native board and its rule settings.

pairnumber

The zero-based pair index.

idstring

An SVG identifier prefix for this drawing.

options (optional)TsunagiDrawOptions

Native drawing, geometry, game or mount settings.

Returns

{ washes: string; line: string; beads: string; ghosts: string; }

What one pair's line is made of in a drawing, for a page that keeps a drawing in its DOM and redraws only the pair whose line changed: its washes and its little marbles, each to go inside the group of that pair's (.tsu-washes > [data-pair] and .tsu-beads > [data-pair], and .tsu-ghosts > [data-pair] on a board that wraps), and its line (a .tsu-line for the .tsu-lines group, to replace any of that pair's). id is the drawing's own (<svg>'s paper gradient is <id>-paper), so the pieces use its gradients. Boards with bridges are drawn whole, since a bridge's deck and the lines under it depend on every line.

Examples

import { TSUNAGI_4 } from "@johnmorrisdotca/tsunagi/levels-4";
import { decodeLayout } from "@johnmorrisdotca/tsunagi";
import { drawTsunagiPair } from "@johnmorrisdotca/tsunagi/draw";

const givens = TSUNAGI_4[0][0];
const layout = decodeLayout(givens,4)!;
console.log(drawTsunagiPair(layout,0,"sample").line.length);
0

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/tsunagi 1.7.0.