本文へ移動

Tenka天下

2〜6人で、シードから始まる世界征服ゲームを遊べます。さいころでの戦い、カード、コンピューターの相手、ゲームの保存に対応します。

「天下」は、天の下に広がる世界を表す言葉です。 名前について(英語)

目次

解説

地図・SVG・装飾

ルールが読む地図の接続関係を使い、SVGで描き、KorokoroのさいころとToranpuのカードで卓を飾ります。

ルールは接続関係を使う

世界とヨーロッパの地図には領地番号、大陸、陸と海の隣接関係があります。ルールは輪郭ではなく、その関係を読みます。輪郭は別エントリーで持ち、UIのモデルが所有者、兵数、選択や到達候補の印を組み合わせます。

import {startTenka} from "@johnmorrisdotca/tenka";
import {tenkaMapModel,continentView} from "@johnmorrisdotca/tenka/ui";
const game = startTenka(10,["Seat 1","Seat 2"],42,"auto","europe")!;
console.log(tenkaMapModel(game).lands.length,continentView(null,"europe"));
49 [ 0, 0, 2000, 1672 ]

実行中に地図を取得しない

開発時にスクリプトで形を作り確認します。卓にはデータが含まれ、地図サービスは不要です。tenkaMapSvgはDOMのSVG要素を作ります。ReactのTenkaMapはReactで表示し、キーボードの選択は地図の座標と表示範囲を使います。

結果を変えずに装飾する

任意の装飾エントリーでKorokoroのさいころとToranpuのカードを使います。その場合だけ対応するパッケージを入れます。tenkaThrownDieは呼べる関数ではなくnextを持つ乱数オブジェクトで、決定済みの目を表示します。独自の描画は要素と任意のdestroyを返します。失敗すると簡単な標準表示へ戻ります。UIと装飾を参照してください。

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

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