リバースの検索プログラム
石を置いたときに置くことができるのか?を判断させる回路を作成する。
考え方としては、方向別に処理します。
検索処理
置いた場所の数値化
M5000からの置き場所情報を数値化します。
面倒なのでFOR-NEXT 64個検索ですが、TP製作で行別にした影響で80個検索となりました。
白黒手番の数値化
手番側を黒としたときに、リバース対象とはさみ対象を数値化します。
リバース対象=2ならリバースできる。はさみ対象=1があれば挟んでリバースできると判断します。
方向で検索前処理
右方向への処理を定義します。
判定する置き場所から右方向に進むので判定場所は+1右となります。
判定結果をいったんリセット処理します。
演算処理をCALLで読出します。
右方向にリバース対象があるなし判別
処理に負担がかかる、また、構造化したいのでサブルーチンで処理します。
リバース対象対象カウントをリセットし、最大8個の判別処理をします。
P199では、対象場所が-1以下または盤外にでたら演算しない条件としています。
また、BRAEKは対象がない場合およびはさみ対象を見つけたらP200へジャンプさせます。
各方向分の処理を作成します。
右方向は置いた場所から、右に+1、左の場合は-1、上の場合は-10、下の場合は+10、斜めの場合はそれぞれ-9、-11、+9、+11となります。
連続処理としてつなぎます
右の処理、左の処理・・・を連続して行います。
M1000をSETしたら、実行し、右方向の処理へ(P111)ジャンプさせます。
完了したら、、左方向の処理へ移ります。
SET、RSTの順送りシーケンス回路です。
まとめ
まずは、ここまでで検索できるような処理を作ってみました。
実際に、リバース処理を実行させると不具合がでますので修正しました。
次は、リバース処理をします。
コメント