ZoGの欠点

<コマンド関係>
  • If文にはElseが1個しか使えません。
(EleseIfが使えないため、常に2分岐しかできず、Select・・・Caseに向いた多分岐ができません)
  • 不定回数繰り返しのWhile文しかありません。
(定回数繰り返しのFor・・・Next文がないため、繰り返す個数だけコードを書く必要があります)
  • ゴール条件をVerify文やIf文、While文で参照できません。
(現在の移動によりチェックメイトになる場合、現在の移動をキャンセルするなどができません)
  • 手番のパスを行うコマンドがありません。
(オプション設定でパスありにした場合でも、メニューやツールボタンからパスする必要があります)
  • 「move-priorities」は、優先度を設定する際、同順位の優先度を設定できません。
(複数の「move-type」を同時に優先することができません)
  • 「Flip Board」「Switch Piece Set」を行うコマンドがありません。
(移動とともにボードを反転したり、駒画像を変更したりすることができないため、手番交代時に自動でボード反転できず、常に手動での切り替えとなります)
  • マス(位置)は排他的であり、1マス上には駒は1個しか存在できません。
(同じマス上に駒が重複した場合、もともとあった駒は除去され、新たに追加された駒が残ります)
  • オフボードの駒数をゲーム中に増減できません。
(盤面の初期配置時のみ「off」で設定可能です)
  • 「recycle captures」では、盤上から除かれた自駒を自分のオフボードに補充できますが、盤上から除かれた敵駒を自分のオフボードに補充することはできません。
(取った敵の駒を再利用して手駒としてドロップすることはできません)

<変数関係>
  • 数値変数が使用できません。
(フラグと呼ばれる2値変数しか使用できません)
  • フラグは移動ブロック内でのみ有効で、移動終了後は保存されません。
(手番を越えて値を保持したり、他の駒に値を引き渡すことができません)
  • 駒種や現在位置を保存しておく変数がありません。
(文字列、数値配列を格納できません)
  • 「attribute」はゲーム中ずっと保存されますが、駒単位で保管され、他の駒と共有できません。
  • チェックメイト対象の駒が攻撃されているかどうかを返すフラグがありません。
(チェックメイト対象の駒自身の移動で確認するか、チェックメイト対象の駒を盤上から検索する必要があります)
  • 周囲8マスに隣接した敵から攻撃されていないかを確認するコマンドありますが、周囲8マスに隣接した味方から防御されていないかを確認するフラグはありません。
(「adjacent-to-enemy?」のみあり、「adjacent-to-friend?」はありません)
  • 1手番前に移動した駒の移動先と移動元を参照するフラグはありますが、2手番前に移動した駒の移動先と移動元を参照するフラグはありません。
(「last-to?」「last-from?」は1手前の相手の駒の移動先・移動元を参照できますが、2手前の自分の駒の移動先・移動元は参照できません)
  • 現在移動している駒の移動先と移動元を参照するフラグもありません。
(「to?」「from?」はありません)
  • 「cascade」使用時は、「last-from」「last-to」は、「cascade」前の駒(移動のために自分が選択した駒)の移動前の位置、移動先の位置を参照します。
(つまり、「cascade」後の駒の移動前の位置、移動先の位置は取得できません)
  • 自分を介してチェックメイト対象が間接的に攻撃されているか(ピンされているか)確認するフラグはありません。
  • 自分を攻撃している敵駒や自分を防御している自駒を取得するコマンドはありません。
(王手している敵駒の位置を参照するのが困難です)

<ゴール関係>
  • 総ターン数、特定局面からのターン数などをゴールに設定できません。
  • 総対局時間・持ち時間切れ・秒読み切れなどをゴールに設定できません。
  • 千日手の反復局面数を指定できません。
(チェスと同じで同一手番同一局面が3回で千日手ですが、将棋は本来4回で千日手です)
  • 連続王手の千日手のみを別にゴールに設定できません。
(連続王手の千日手を負け、それ以外の千日手を引き分けにできない)
  • 途中からゴールを変更することができません。
(ある駒が取られた後からチェックメイト対象が変わる、両者入玉後に持将棋になるなど)
.特定の条件下のみで適用されるゴールを設定することができません。
(盤上に残っている王駒によって、キャプチャをゴールにするか、チェックメイトをゴールにするか変えるなど)
  • 指定された攻撃(指定された攻撃以外)によるチェックメイトを設定できません。
(打ち歩詰め禁止の実装が困難です)
  • 特定の駒をキャプチャされた時は、特定の駒が指定枚数になった時はゴールに設定できますが、特定の駒が攻撃された時(チェックされた時)はゴールに設定できません。
(指定回数チェックされたら負けなどの設定はできません)
  • 駒ごとに点数を付けてスコアを集計したり、空いている・攻撃している・攻撃されている位置を集計したりできません。
(盤上に残った駒の合計スコアで勝敗を決めることができません)
  • 「captured」は、「add-partial」による部分移動中は判定されますが、「turn-order」で次の手番が自分の場合は判定されません。
(部分移動中の「captured」判定のon/off、連続手番時の「captured」判定のon/off設定ができません)

<ターン関係>
  • ゲームのゴールにターン数を指定することができません。
(詰将棋のような、手数指定ができません)
  • 現在のターン数を取得・参照することができません。
(チェスの50手ルールの再現が困難です)
  • ターンを戻す(●手前の局面に戻す)ことができません。
(拒否将棋のような指し直させる変則将棋はできません)

<時間関係>
  • 持ち時間・秒読みを表示することができません。
  • ゲームのゴールに持ち時間・秒読みなどを指定することができません。
(時間切れ負けを実装できません)
  • 対局時間・持ち時間・秒読みなどを取得・参照することができません。
  • 持ち時間・秒読みを変更することができません。
(時間制限を付けたり、フィッシャールールを実装したりできません)

<操作関係>
  • 複数の移動方法がある場合に出るメッセージボックスで、移動の選択肢を区別するコメントを付けられません。
(「attribute」変更の有無は区別できず、同じ移動の選択肢に見えます)
  • 駒クリックで自駒の移動範囲は確認できますが、敵駒の移動範囲は確認できません。
  • 駒のプロパティで、駒の動き方や利きの範囲を図示できません。
(画像を表示する機能がなく、文章での説明のみです)

<ボード関係>
  • 画面解像度を越える画像サイズの盤の場合、画面外に出た範囲が見切れます。
(スクロールやズームアウトができません)
  • 「フリップ」した際、盤画像は反転し、駒画像の位置も反転しますが、駒画像は反転しません。
(チェスでは問題ありませんが、将棋の場合に駒の向きが逆になります)
  • 棋譜再生で、プレイヤー単位での逆戻り(前の自分の手番に戻る)はできますが、プレイヤー単位での順送り(次の自分の手番に進む)はできません。
  • 棋譜再生で、部分移動単位での逆戻り・順送りはできますが、手番単位(連続移動単位)での逆戻り・順送りはできません。


<グラフィック関係>
  • 画像はbmpしか使えません。
(pngやjpg、gifなど圧縮画像が使えないため、ファイルデータが大きくなります)
  • αチャンネル非対応のため、半透明処理ができません。
(駒画像の1色指定透過はできます)
  • 1色指定透過が、純緑(R 0/G 255/B 0)固定のため、駒画像において純緑が使用できません。


<サウンド関係>
  • 効果音はwav、BGMはmidしか使えません。
(mp3やoggなど圧縮音声が使えないため、ファイルデータが大きくなります)

<AI関係>
  • 情報隠蔽ゲームを作成する場合でも、AIには情報が隠蔽されません。
  • 駒昇格の方が有利な場合でも、昇格しない手を指すのを修正できません。
(AI用の駒の評価値を設定できません)
  • AIの考える、駒の評価値、位置の評価値を一覧表示できません。
(各駒のプロパティで、駒の価値は参照できます)
  • AIの考える、着手の評価値、形勢の評価値を一覧表示できません。


最終更新:2020年09月16日 19:15