作例1:泰将棋

  • 目標
 25×25の持駒なしの古将棋である「泰将棋(無上泰将棋)」を制作します。

  • 工程
①駒のサイズを決める
 30ピクセル×30ピクセルにします。
 理由としては、ギリギリ可読性のある2文字(1文字8ポイント)を記載できるからです。

②盤のマス目のサイズを決める
 枠内を30ピクセル×30ピクセル(縦横の枠線を1ピクセル)にします。
 枠も入れると1マスのサイズは、32ピクセル×32ピクセルです。
 連続して並べるため、枠は左と上だけ含めて、1単位としては31ピクセル×31ピクセルです。
 駒がギリギリ入る大きさにしますが、25マスあるため、盤は31×25+1=776ピクセルです。
 つまり、最小でも盤のサイズは776ピクセル×776ピクセルになります。
 ※ZoGには盤面のズーム機能やスクロール機能がないため、モニタ解像度は縦800ピクセル以上が推奨されます。
 (縦768ピクセルでは、ZoGのメニューバーのため、ツールバーを非表示にしても下3段が隠れます)

③盤のグラフィックを作る
 30ピクセル×30ピクセル内に、ギリギリサイズで五角形の駒枠を描きます。
 駒枠内に8ポイントで文字(駒名は原則2文字で)を入れます。

④駒のグラフィックを作る
 1ピクセルで最外縁に矩形を描き、30ピクセルあけて、縦線と横線を等間隔に1ピクセルで描画します。
 左上のマスは、左上点(1,1)-右下点(32,32)、枠を含めないと、左上点(2,2)-右下点(31,31)です。
 配置用の1単位は、左上点(1,1)-右下点(31,31)になります。

⑤180度反転した駒のグラフィックを作る
 相手用の駒は、「上下反転→左右反転」することで、180度反転した駒になります。

⑥盤の設定
 Ⅰ:「image」で盤のグラフィックを指定します。

 Ⅱ:「grid」で、盤の講師を定義します。
   「start-rectangle」で、左上のマスを「1 1 31 31」と設定します。
   「dimensions」で、
   横方向へ「(31 0)」ずつ「列(筋):1~25」を定義し、
   縦方向へ「(0 31)」ずつ「行(段):i~xxv」を定義します。
   「directions」で、
   東西南北を「(n 0 -1) (e 1 0) (s 0 1) (w -1 0)」と定義し、
   斜め四方を「(ne 1 -1) (nw -1 -1) (se 1 1) (sw -1 1)」と定義します。
   横方向は右(東)が+、縦方向は下(南)が+です。
 ※(nn 0 -2)や(nnn 0 -3)なども定義しておくと、獅子や奮迅の設定が楽です。
  (nne 1 -2)と(nnw -1 -2)も定義しておくと、桂馬の設定が楽です。

 Ⅲ:「zone」設定は不要です。
   敵陣(昇格ゾーン)での昇格ではなく、敵を取った際の自動昇格のため、昇格ゾーンは設定不要です。

⑦駒の設定
 自在天王:王駒
 太子:王駒
 太子(醉象からの昇格):王駒
 存在する王駒が全て取られたら負け=1個でも王駒が残っていれば対局を続行します。
 ※「checkmated」は指定した王駒のどれかが詰んだ時点で勝敗がつくため、
  「pieces-remaining」で指定した王駒の残数がなくなった時点で勝敗をつけます。
  (「pieces-remaining」は、and演算が可能です)

 ※「無明・法性」または「提婆・教王」を取った駒は、自分の成駒ではなく、「法性」または「教王」に成ります。
 →王駒にも適用されるのでしょうか??

⑧駒の動き
 歩き駒 → 跳び駒:離れた位置を方向として定義し、その方向(離れた位置)へ直接移動します。
 走り駒 → 走り駒(歩数制限):走り駒の繰り返しをなくし、制限数だけ繰り返します。
 ※跳ばずに離れた位置へ移動する駒の場合、走り駒の途中区間での「add」を省略します。

 踊り駒
  Ⅰ:走り駒の方向転換・・・鉤行・天狗・摩羯・孔雀
  Ⅱ:全方位へ複数回移動・・・獅子・奮迅・法性
  Ⅲ:直線方向へ複数回移動・・・狛犬・教王・飛鷲・角鷹
 ※踊り駒は、多段移動のため、「add-partial」を使用します。

 自在駒:盤上の任意の位置(味方の駒のマスを除く)へ直接移動します。
 駒打ち:盤上の任意の位置(空いたマスのみ)へ直接移動します。
 ※自在天王は紐の付いていない(他の敵が利いていない)敵駒のみを取れます。
 →「checkmated」で指定すると、自動的に「safe-move」となるが、複数の王駒には対応できない。
  「attacked?」で判定すると、盤が広くて駒数が多いと、処理にとても時間がかかる。

⑨盤上の駒の配置
 左右非対称に配置される駒があります。
 左車 右車
 左将 右将
 提婆 無明
 力士 金剛
 羅刹 夜叉:動きの対称性に疑問を感じます。
 麒麟 鳳凰
 大竜 金翅
 摩羯 鉤行
 古鶏 行鳥:動きの対称性に疑問を感じます。
 西戎 北狄:動きの対称性に疑問を感じます。
 東夷 南蛮:動きの対称性に疑問を感じます。
 玄武 白虎:動きの対称性に疑問を感じます。
 青竜 朱雀:動きの対称性に疑問を感じます。

  • 進捗状況
 現在:盤面整備率100%!
 課題:
 ①自在天王同士の取り合いの解釈
  Ⅰ:敵の自在天王が利いている敵の駒は常に取れない(自在天王で取り返される)
    自在天王以外の敵が利いていない駒でも取れない
  Ⅱ:敵の自在天王が利いている敵の駒でも取れる場合あり(自在天王で取り返される場合あり)
    自在天王以外の敵が利いておらず、味方が利いていれば取れる
  Ⅲ:敵の自在天王が利いている敵の駒も取れる(自在天王で取り返されない)
    自在天王以外の敵が利いている駒のみ取れない
 ②王駒3個と自在天王の自在移動の両立
 ③王駒の取った「法性」または「教王」への昇格の解釈
  Ⅰ:王駒は除外
  Ⅱ:王駒が1個でも残れば適用可能
  Ⅲ:王駒にも強制適用され、王駒が消えれば敗北
 ④取った「法性」または「教王」への昇格
  Ⅰ:王駒は昇格不可
  Ⅱ:最低1個の王駒を残せば昇格可能(任意もしくは強制)
  Ⅲ:王駒が消滅したら即敗北
(⑤東西南北と四聖獣の動きの整合性)
(⑥wikipediaの大竜の動きが生駒と成駒で合わない)

<移動方式(泰将棋)>
  • 歩き
 隣接1マスへ移動

  • 走り
 特定方向へ間の駒を跳び越えずに何マスでも移動
  • N歩走り
 特定方向へ間の駒を跳び越えずにNマスまで移動

  • 跳び:桂馬・驢馬
 非隣接マスへ間の駒を跳び越えて直接移動
  • 自在跳び:自在天王
 盤上の全てのマス(味方駒マスを除く、敵駒マスまたは空きマス)へ移動
 ただし、他の敵が利いている敵駒のマスへは移動できない!

  • 踊り
 多段階移動
  • N回踊り
 N回連続で移動

  • 走り踊り:鈎行・磨羯・天狗・孔雀
 特定方向へ1回走った後、向きを変えて別の方向へ連続で走る移動
 敵の駒を取った場合は強制停止(敵の駒を連続で取ることは不能)
 転換型:進んできた方向と直交する両方向へ進める
  • 歩き踊り:獅子・狛犬・法性・教王
 隣接1マスへ1回歩いた後、さらに隣接マスへ連続で歩く移動
 敵の駒を取った場合も継続可能(敵の駒を連続で取ることも可能)
 往復型:進んだ方向へさらに進むか、逆方向へ戻るかのみ
 自由型:進んだ方向と関係なく、全方向へ進める

  • 盤をチェック柄に変更・・・斜めの利きを見やすくするため
  • 駒名を塗り分け・・・黒:生駒、赤:成駒、青:不成駒、緑:不成駒(王駒)、橙:成駒(王駒)

最終更新:2020年05月01日 16:00