オセロゲーム設計 その3 リバースの検索プログラム

目次 

1.やりたいこと

2.やったこと

3.まとめ



1.やりたいこと

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

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


2.やったこと

1)置いた場所の数値化

M5000からの置き場所情報を数値化します。

面倒なのでFOR-NEXT 64個検索ですが、TP製作で行別にした影響で80個検索となりました。

2)白黒手番の数値化

手番側を黒としたときに、リバース対象とはさみ対象を数値化します。

リバース対象=2ならリバースできる。はさみ対象=1があれば挟んでリバースできると判断します。

3)方向で検索前処理

右方向への処理を定義します。

判定する置き場所から右方向に進むので判定場所は+1右となります。

判定結果をいったんリセット処理します。

演算処理をCALLで読出します。

4)右方向にリバース対象があるなし判別

処理に負担がかかる、また、構造化したいのでサブルーチンで処理します。

リバース対象対象カウントをリセットし、最大8個の判別処理をします。

P199では、対象場所が-1以下または盤外にでたら演算しない条件としています。

また、BRAEKは対象がない場合およびはさみ対象を見つけたらP200へジャンプさせます。

5)各方向分の処理を作成します。

右方向は置いた場所から、右に+1、左の場合は-1、上の場合は-10、下の場合は+10、斜めの場合はそれぞれ-9、-11、+9、+11となります。

6)連続処理としてつなぎます。

右の処理、左の処理・・・を連続して行います。

M1000をSETしたら、実行し、右方向の処理へ(P111)ジャンプさせます。

完了したら、、左方向の処理へ移ります。

SET、RSTの順送りシーケンス回路です。


3.まとめ

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

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

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

FA電気設計屋の備忘録

FA設計では、主としてPLC(シーケンサ)を使用してプログラムします。ラダーソフトは、簡便でちょっと理解できれば使えますが、昨今のIOT時代を迎えて、高速、高度化がすすみ、今までPC等の言語系プログラムしかできなかったことさえも可能となっています。そうなると今まで通りの考え方では、プログラム設計はバグとの闘いになります。その闘いの記録とFA設計で必要な備忘録をアップします。

0コメント

  • 1000 / 1000