本文へ移動

Gunjin軍人

階級を隠す5つの対戦ゲームで、配置を非公開に保ち、表示や再生を共有し、1台の端末を交代して遊べます。

「軍人」は、兵士を表す言葉です。 名前について(英語)

目次

やり方

見る側に許された情報だけを表示する

判定する状態、プレイヤーの表示、観戦者の位置を分けます。

表示する前に情報を取り出す

import { createHasamiMatch,hasamiRoster,submitHasamiSetup } from "@johnmorrisdotca/gunjin/hasami";
import { acknowledgePass } from "@johnmorrisdotca/gunjin/gunjin-shogi";
const home=(player:0|1)=>hasamiRoster(7).map((kind,x)=>({kind,x,y:player===0?6:0}));
let match=createHasamiMatch({width:7,height:7});
match=submitHasamiSetup(match,0,home(0),match.setupStep);
match=acknowledgePass(match,1,match.turn);
match=submitHasamiSetup(match,1,home(1),match.setupStep);
match=acknowledgePass(match,0,match.turn);
import { viewForPlayer,publicPosition } from "@johnmorrisdotca/gunjin/views";
const red=viewForPlayer(match,0);
console.log(red.pieces?.find(piece=>piece.owner===1));
console.log(publicPosition(match).pieces?.[0]);
{ owner: 1, x: 0, y: 0, kind: null, hidden: true }
{ owner: 0, x: 0, y: 6, hidden: true }

自分の駒には、種類とIDがあります。相手の種類はnullで、IDはありません。観戦者には所属と座標だけを渡します。配置や受け渡しでは、盤の駒はnullです。その側の配置も、配置中だけです。このnullは意図して隠した情報で、盤の欠落ではありません。

公開する戦闘の情報

ログや再生には、その規則が公開する戦闘の階級だけが入ります。他の階級や配置は非公開です。描画には、完全な状態ではなくPlayerViewを渡します。離れたホストから配信する場合、見る側の本人確認をします。完全な情報をすでに渡した後では、画面だけで秘密を守れません。

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

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