本文へ移動

Narabe並べ

48種類の盤上ゲームを、新しい局面を返す手の操作、合法手の一覧、再生できる棋譜で扱えます。

「並べ」は五目並べの「並べ」。石を並べることを表す言葉です。 名前について(英語)

目次

やり方

合法手を提示する

合法手をエンジンに問い合わせ、手番の各段階を扱い、クリックで手番が終わると決めつけません。

エンジンの答えを使う

石を置くゲームではlegalPointsとplayMove、駒を動かすゲームではturnChoices、pieceMoves、movePieceを使います。必須の取りなどによる制限もエンジンが決めます。表示側はその答えを使います。

import {createGame,turnChoices,pieceMoves,movePiece} from "@johnmorrisdotca/narabe";
let game = createGame({variant:"checkers"});
const choices = turnChoices(game);
if (choices?.kind === "move" && choices.pieces.length) {
  const from = choices.pieces[0];
  const to = pieceMoves(game,from)[0];
  game = movePiece(game,from,to);
}
console.log(game.moves.length,game.toPlay);
1 white

別の段階に対応する

turnChoicesは、終了したゲーム、区画の回転待ち、キューから駒を置くゲーム、囲碁ではnullを返します。nullだけで終了と判断しません。回転にはcanTwistとtwistBoard、駒の配置にはpiecePlacementsとplacePiece、パスにはcanPassとpassTurnを使います。開始方式によっては色の選択や追加配置が必要です。

手番全体を扱う

1手番で複数の石を置く、区画を回す、連続して取る場合があります。クリックごとに交代すると決めず、操作後のtoPlay、pendingTwist、chainAt、開始方式の状態を読みます。forbiddenReasonは禁じ手の形を説明します。他にも、石のある位置、操作の段階、盤外などで拒否されます。局面の設計も参照してください。

ソースを見るGitHub で編集@johnmorrisdotca/narabe 1.3.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。