オセロゲーム設計 その3

ゲーム

リバースの検索プログラム

石を置いたときに置くことができるのか?を判断させる回路を作成する。

考え方としては、方向別に処理します。

検索処理

置いた場所の数値化

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の順送りシーケンス回路です。

まとめ

まずは、ここまでで検索できるような処理を作ってみました。

実際に、リバース処理を実行させると不具合がでますので修正しました。

次は、リバース処理をします。

コメント

タイトルとURLをコピーしました