将棋のZRF:解説7

<ゲームの設定3>
  • 盤を設定するブロック:
 (board
  (image "images\Shogi\SHaag\ShogiBrd.bmp" "images\Shogi\IntlSHaag\ShogiBrd.bmp" "images\Shogi\ShogiBrd.bmp")

※画像を複数設定しておくと、「Switch Piece Set」で番の画像を切り替えられます。

  • マス目を設定するブロック:
  (grid
   (start-rectangle 15 15 55 60) ; 22 25 62 70
   (dimensions ;17x9
   ; za = zb = "no mans land" area between board and prisons
   ; pb1-3 = black's prison table
   ; pw1-3 = white's prison table
    ("pw3/pw2/pw1/za/9/8/7/6/5/4/3/2/1/zb/pb1/pb2/pb3" (41 0))
    ("i/ii/iii/iv/v/vi/vii/viii/ix" (0 46))
   )
   (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)
   )
  )

※横は17列(3+1+9+1+3)、縦は9段でグリッド状にマス目を生成します。

※上・下・左・右、右上・右下・左上・左下を設定します。

※桂馬の動きを(shift2P)でなく(shiftP)で行いたい場合
   (directions
    (nne 1 -2) (nnw -1 -2) (sse 1 2) (ssw -1 2) (ene 2 -1) (wnw -2 -1) (ese 2 1) (wsw -2 1)
   )

  • 不要なマス目を削除するブロック:
  ; delete "no mans land"
  (kill-positions
   zai zaii zaiii zaiv zav zavi zavii zaviii zaix
   zbi zbii zbiii zbiv zbv zbvi zbvii zbviii zbix
  )

※左右の駒台(3×9)と盤(9x9)の間の列(1×9)内のマスを削除します。

  • 不要なマス間の接続を解除するブロック:
  (unlink (bprison) (wprison))
  ; setup prisoners chains (is there a better way to specify a general many to one link?)

※黒の駒台と白の駒台は、各駒台上での駒移動ができないように、隣接マスとの連結を解除しておきます。
→駒台上の移動は、「next-prison」による一方通行のみにします。

  • 黒駒の盤から駒台への接続を設定するブロック:
  (links to-prison
   (9i pb1ix) (8i pb1ix) (7i pb1ix) (6i pb1ix) (5i pb1ix) (4i pb1ix) (3i pb1ix) (2i pb1ix) (1i pb1ix)
   (9ii pb1ix) (8ii pb1ix) (7ii pb1ix) (6ii pb1ix) (5ii pb1ix) (4ii pb1ix) (3ii pb1ix) (2ii pb1ix) (1ii pb1ix)
   (9iii pb1ix) (8iii pb1ix) (7iii pb1ix) (6iii pb1ix) (5iii pb1ix) (4iii pb1ix) (3iii pb1ix) (2iii pb1ix) (1iii pb1ix)
   (9iv pb1ix) (8iv pb1ix) (7iv pb1ix) (6iv pb1ix) (5iv pb1ix) (4iv pb1ix) (3iv pb1ix) (2iv pb1ix) (1iv pb1ix)
   (9v pb1ix) (8v pb1ix) (7v pb1ix) (6v pb1ix) (5v pb1ix) (4v pb1ix) (3v pb1ix) (2v pb1ix) (1v pb1ix)
   (9vi pb1ix) (8vi pb1ix) (7vi pb1ix) (6vi pb1ix) (5vi pb1ix) (4vi pb1ix) (3vi pb1ix) (2vi pb1ix) (1vi pb1ix)
   (9vii pb1ix) (8vii pb1ix) (7vii pb1ix) (6vii pb1ix) (5vii pb1ix) (4vii pb1ix) (3vii pb1ix) (2vii pb1ix) (1vii pb1ix)
   (9viii pb1ix) (8viii pb1ix) (7viii pb1ix) (6viii pb1ix) (5viii pb1ix) (4viii pb1ix) (3viii pb1ix) (2viii pb1ix) (1viii pb1ix)
   (9ix pb1ix) (8ix pb1ix) (7ix pb1ix) (6ix pb1ix) (5ix pb1ix) (4ix pb1ix) (3ix pb1ix) (2ix pb1ix) (1ix pb1ix)
  )

※黒駒は、盤上から駒台のpb1ixへ移されます。

  • 白駒の盤から駒台への接続を設定するブロック:
  (links to-white-prison
  ; associated with to-prison through symmetry
   (9i pw1i) (8i pw1i) (7i pw1i) (6i pw1i) (5i pw1i) (4i pw1i) (3i pw1i) (2i pw1i) (1i pw1i)
   (9ii pw1i) (8ii pw1i) (7ii pw1i) (6ii pw1i) (5ii pw1i) (4ii pw1i) (3ii pw1i) (2ii pw1i) (1ii pw1i)
   (9iii pw1i) (8iii pw1i) (7iii pw1i) (6iii pw1i) (5iii pw1i) (4iii pw1i) (3iii pw1i) (2iii pw1i) (1iii pw1i)
   (9iv pw1i) (8iv pw1i) (7iv pw1i) (6iv pw1i) (5iv pw1i) (4iv pw1i) (3iv pw1i) (2iv pw1i) (1iv pw1i)
   (9v pw1i) (8v pw1i) (7v pw1i) (6v pw1i) (5v pw1i) (4v pw1i) (3v pw1i) (2v pw1i) (1v pw1i)
   (9vi pw1i) (8vi pw1i) (7vi pw1i) (6vi pw1i) (5vi pw1i) (4vi pw1i) (3vi pw1i) (2vi pw1i) (1vi pw1i)
   (9vii pw1i) (8vii pw1i) (7vii pw1i) (6vii pw1i) (5vii pw1i) (4vii pw1i) (3vii pw1i) (2vii pw1i) (1vii pw1i)
   (9viii pw1i) (8viii pw1i) (7viii pw1i) (6viii pw1i) (5viii pw1i) (4viii pw1i) (3viii pw1i) (2viii pw1i) (1viii pw1i)
   (9ix pw1i) (8ix pw1i) (7ix pw1i) (6ix pw1i) (5ix pw1i) (4ix pw1i) (3ix pw1i) (2ix pw1i) (1ix pw1i)
  )

※白駒は、盤上から駒台のpw1iへ移されます。
→「symmetry」により、「to-prison」と対になって使用されます。

  • 駒台の次のマスへの接続を設定するブロック:
  (links next-prison
   (pb1ix pb2ix) (pb2ix pb3ix) (pb3ix pb1viii)
   (pb1viii pb2viii) (pb2viii pb3viii) (pb3viii pb1vii)
   (pb1vii pb2vii) (pb2vii pb3vii) (pb3vii pb1vi)
   (pb1vi pb2vi) (pb2vi pb3vi) (pb3vi pb1v)
   (pb1v pb2v) (pb2v pb3v) (pb3v pb1iv)
   (pb1iv pb2iv) (pb2iv pb3iv) (pb3iv pb1iii)
   (pb1iii pb2iii) (pb2iii pb3iii) (pb3iii pb1ii)
   (pb1ii pb2ii) (pb2ii pb3ii) (pb3ii pb1i)
   (pb1i pb2i) (pb2i pb3i)

   (pw1i pw2i) (pw2i pw3i) (pw3i pw1ii)
   (pw1ii pw2ii) (pw2ii pw3ii) (pw3ii pw1iii)
   (pw1iii pw2iii) (pw2iii pw3iii) (pw3iii pw1iv)
   (pw1iv pw2iv) (pw2iv pw3iv) (pw3iv pw1v)
   (pw1v pw2v) (pw2v pw3v) (pw3v pw1vi)
   (pw1vi pw2vi) (pw2vi pw3vi) (pw3vi pw1vii)
   (pw1vii pw2vii) (pw2vii pw3vii) (pw3vii pw1viii)
   (pw1viii pw2viii) (pw2viii pw3viii) (pw3viii pw1ix)
   (pw1ix pw2ix) (pw2ix pw3ix)
 )

※黒駒は、駒台を左から右へ、下から上へと進みます。

※白駒は、駒台を左から右へ、下から上へと進みますが、盤が反転しているため、実際は右から左へ、上から下へと進みます。

  • 駒台から盤への接続を設定するブロック:
 (links to-board
   (pb1i 9i) (pb2i 9i) (pb3i 9i)
   (pb1ii 9i) (pb2ii 9i) (pb3ii 9i)
   (pb1iii 9i) (pb2iii 9i) (pb3iii 9i)
   (pb1iv 9i) (pb2iv 9i) (pb3iv 9i)
   (pb1v 9i) (pb2v 9i) (pb3v 9i)
   (pb1vi 9i) (pb2vi 9i) (pb3vi 9i)
   (pb1vii 9i) (pb2vii 9i) (pb3vii 9i)
   (pb1viii 9i) (pb2viii 9i) (pb3viii 9i)
   (pb1ix 9i) (pb2ix 9i) (pb3ix 9i)

   (pw3i 9ix) (pw2i 9ix) (pw1i 9ix)
   (pw3ii 9ix) (pw2ii 9ix) (pw1ii 9ix)
   (pw3iii 9ix) (pw2iii 9ix) (pw1iii 9ix)
   (pw3iv 9ix) (pw2iv 9ix) (pw1iv 9ix)
   (pw3v 9ix) (pw2v 9ix) (pw1v 9ix)
   (pw3vi 9ix) (pw2vi 9ix) (pw1vi 9ix)
   (pw3vii 9ix) (pw2vii 9ix) (pw1vii 9ix)
   (pw3viii 9ix) (pw2viii 9ix) (pw1viii 9ix)
   (pw3ix 9ix) (pw2ix 9ix) (pw1ix 9ix)
  )

※黒駒は、駒台から盤上の9一へ移されます。
※白駒は、駒台から盤上の9九へ移されます。

  • 対称性を設定するブロック:
  (symmetry White (to-prison to-white-prison))
  (symmetry White (n s)(s n) (nw sw)(sw nw) (ne se)(se ne))

※白の手番において、白駒を盤上から白の駒台へ移動する動作は、黒の手番において、黒駒を盤上から黒の駒台へ移動する動作になります。

※白の手番において、上へ進む動作は、黒の手番において、下へ進む動作になります。
(左右へ進む動作は、手番の影響を受けず、変わりません)

→上下対称(線対称)でなく、上下左右対称(点対称)にしたい場合
  (symmetry White (n s)(s n) (e w)(w e) (ne sw)(sw ne) (nw se)(se nw))

※桂馬の動きを(shift2P)でなく(shiftP)で行いたい場合
  (symmetry White (nne sse)(sse nne) (nnw ssw)(ssw nnw) (ene ese)(ese ene) (wnw wsw)(wsw wnw))

  • 盤上ゾーン(1-9段目)を設定するブロック:
  (zone
   (name play-zone)
   (players White Black)
   (positions (ranki) (rankii) (rankiii) (rankiv-vi) (rankvii) (rankviii) (rankix))
  )

※白も黒も共通で、駒台上の位置は含まれません。
※盤上の駒を動かす動作か、駒台の駒を打つ動作かを区別する際に利用します。

  • 昇格ゾーン(7-9段目=敵陣1-3段目)を設定するブロック:
  (zone
   (name promotion-zone)
   (players Black)
   (positions (ranki) (rankii) (rankiii))
  )
  (zone
   (name promotion-zone)
   (players White)
   (positions (rankvii) (rankviii) (rankix))
  )

※昇格ゾーン内では、玉将や金将、成駒以外は、成ることができます。
(行きどころがあれば、成らなくてもかまわないです)

  • 駒台のゾーンを設定するブロック:
  (zone
   (name prison-zone)
   (players Black)
   (positions (bprison))
  )
  (zone
   (name prison-zone)
   (players White)
   (positions (wprison))
  )

  • 歩兵・香車を打てるゾーン(1-8段目=敵陣1段目以外)を設定するブロック:
  (zone
   (name drop-pawn-zone) ; lance also
   (players Black)
   (positions (rankii) (rankiii) (rankiv-vi) (rankvii) (rankviii) (rankix))
  )
  (zone
   (name drop-pawn-zone) ; lance also
   (players White)
   (positions (ranki) (rankii) (rankiii) (rankiv-vi) (rankvii) (rankviii))
  )

※歩兵・香車が不成で進めるゾーンでもあるため、このゾーンにない位置へ進む場合は強制的に成ります。

  • 桂馬を打てるゾーン(1-7段目=敵陣1-2段目以外)を設定するブロック:
  (zone
   (name drop-knight-zone)
   (players Black)
   (positions (rankiii) (rankiv-vi) (rankvii) (rankviii) (rankix))
  )
  (zone
   (name drop-knight-zone)
   (players White)
   (positions (ranki) (rankii) (rankiii) (rankiv-vi) (rankvii))
  )
 )

※桂馬が不成で進めるゾーンでもあるため、このゾーンにない位置へ進む場合は強制的に成ります。


最終更新:2020年08月29日 16:57