PLC×GOTでオセロ制作にチャレンジしてみた【第2回】

はじめに

PLCといえば、工場などの自動化設備を制御するための頼れる存在ですが、今回はそのPLCをちょっと変わった用途に使ってみました。

そのテーマは…
「PLCでオセロゲームを作ってみよう!」

第1回では、オセロのルールを整理しながら、PLCでの盤面管理について解説しました。
盤面は10×10=100マス。このマスをPLCのZRデバイスで管理することで、オセロらしいゲーム盤ができあがります。

さて、第2回となる今回は、タッチパネル(GOT)側の画面作成について紹介していきます。

・オセロ盤ってどうやって画面に表示するの?
・クリックやタッチはどうPLCに伝えるの?
・石の色はどう切り替える?

そんな疑問に答える形で、GOT画面づくりの流れとポイントをやさしく解説していきます。

GOTとは何か?

今回のオセロゲーム制作では、プレイヤーが石を置いたり、盤面を見たりするために「GOT」と呼ばれるタッチパネルを使います。

GOTとは、Graphic Operation Terminal(グラフィック・オペレーション・ターミナル)の略で、三菱電機が提供するタッチパネル製品です。

工場の現場などでは、機械の動作状況を表示したり、スタート・ストップなどの操作を行うために使用されています。見た目はモニターのようですが、タッチ操作ができる点が特徴です。

通常は「機械の操作・監視」に使われるGOTですが、今回はそれをオセロゲームの盤面として活用してみることにしました。
制御用の表示装置が、ちょっとしたゲーム機のように生まれ変わる――そんな試みです。

使用ソフトと開発環境

今回のオセロゲーム制作では、三菱電機の開発ソフトを使いました。どちらも無料の体験版が提供されており、手軽に始めることができます。

使用したソフトウェア

  • GX Works3:ラダー回路の作成に使用
  • GT Designer3:タッチパネル(GOT)画面の作成に使用

ダウンロード先

以下の三菱電機公式サイトから体験版をダウンロードできます。
もし開けない場合は、三菱電機公式サイトのダウンロードからアクセスしてください。
👉 [GX Works3 体験版ダウンロードページ(三菱電機公式)]
【三菱電機公式サイト】GX Works3 体験版

👉 [GT Designer3 体験版ダウンロードページ(三菱電機公式)]
【三菱電機公式サイト】GT Designer3 体験版
※いずれも三菱電機株式会社の登録商標です。本記事では紹介目的でリンクを掲載しています。

画面設計の考え方

オセロ盤は「10×10=100マス」。
この100マスをGOTの画面上にどう配置するかが、まず最初の課題です。
※なぜ100マスなのかは、PLCの記事で解説します。

マスの配置方法

キリのいい数字のグリッドで配置していきます。
基本的には16グリッドで作成していきます。

  • 左上のマス:ZR0
  • その右:ZR1
  • 右下のマス:ZR99

オセロ-GOT-完成後画面

↑完成後の画面です。

表示の工夫

ただ単にランプをを並べるだけでは分かりにくいので、枠線や背景色を調整し、盤面らしさを出すように工夫しました。

なお、ランプ数が多いため、1つずつ手動で設定していくのは少し手間ですが、連続コピーなどを活用すれば作業効率も上がります。

石の表示方法

オセロといえば、やっぱり「白」と「黒」の石がパッと見て分かることが大事です。
そこで今回は、ワードランプの状態切り替え機能を使って、石の状態を視覚的に表現しました。

表示に使った機能

使用したのは、ワードランプの”条件流用”機能です。
各マスごとに状態表示を4種類用意し、それぞれの表示状態をPLCのZRデバイスの値に応じて切り替えます。

表示の3パターン

  • ● 黒石(例:ZRn = 1)
  • ○ 白石(例:ZRn = 2)
  • □ 空白(例:ZRn = 0)
  • ■ アシスト表示(例:ZRn = 9)

PLC側で各マスのZRデバイスの値を0、1、2、9のいずれかに設定し、それに応じてGOTで図形色を切り替えます。
表示はGOT側の「条件流用」機能で簡単に設定できます。

図形の設定方法

図形を変更します。
今回は基本図形:46円形を使用しました。

オセロ-GOT-ランプ図形

視認性を高めるコツ

  • 表機能を使用して、マスの区切りを明確にする
  • アシスト表示は点滅するなどの視覚効果を加える(応用)

見た目が分かりやすいことで、ゲームとしての完成度もグッと高くなります!

プレイヤーの操作と入力処理

オセロゲームでは、プレイヤーが盤面をタッチして石を置く動作が基本になります。
この「タッチ→入力→反映」の流れをGOTとPLCでどう実現したかをご紹介します。

タッチ操作の仕組み

各マスの上面には、透明スイッチ(M)が割り当てられています。
プレイヤーがマスをタッチすると、対応するZRデバイスが一時的にONになります。

たとえば、特定のマスがタッチすると、タッチした現在地をPLCへ教えることができます。

PLC側での入力処理

PLC側では、MデバイスのONを検出して以下のような処理を行います:

  • そのマスが空白かどうかを確認
  • 現在のプレイヤーが置ける合法手かどうかを判定
  • 合法であれば、石を置き、挟んだ相手の石を反転

こうした処理はすべてラダーで制御しており、Mの入力をトリガーにしてゲームが進行するようになっています。

操作ボタンも設置予定でしたが、、、

パスボタン、終了ボタンを配置予定でしたが、
とりあえずなしで行きます。

表示の工夫

タッチパネルでゲームをするなら、ただ動くだけでなく「見やすさ」「分かりやすさ」も大切です。
今回のオセロ画面では、操作しやすくなるようにいくつかの表示の工夫を取り入れました。

現在のプレイヤーをわかりやすく表示

現在が「黒番」なのか「白番」なのかを見た目で判断できるように、プレイヤー表示欄を設けました。
GOTの文字表示に対して、PLC側のMデバイスで色を切り替えることで、誰のターンかがすぐに分かるようになっています。

※後からプレイヤー名を変更できるように文字列表示にしています。

マスの状態を色で区別

空白、黒、白それぞれの状態を色付きの背景や画像で区別しました。
また、選択可能なマスを点滅させてアシスト表示するなどの視覚的ヒントを加えると、操作性がさらに向上します。

レイアウトにもひと工夫

オセロ盤のサイズ感、マスとマスの間隔、ボタンの配置なども調整しました。
実は、ワードランプのサイズですが、表より-2,-2サイズ小さくして、1ドット→↓にずらしています。
これは、表とワードランプが重ならないようにしています。

ゲーム性がある画面ほど、こうした細かな見せ方の工夫がとても大切になるのではないでしょうか?

制作する際の便利機能

タッチパネルでオセロを動かすというのは、なかなか前例の少ないチャレンジでした。
ここでは、便利機能を記載しておきます。

100マス分のランプ/スイッチ配置が大変!

1つずつ作成していては、かなりの時間がかかってしまいます。
なので、連続コピーを紹介します。

オセロ-GOT-連続コピー001

まずは、コピーしたいオブジェクトを選択します。
選択後、マウスの右クリックを押します。

そして、連続コピーを選択します。

オセロ-GOT-連続コピー002

・コピー後の全体数
→コピー完了後のX数とY数を設定します。
今回は10,10で設定しました。

・間隔
→オブジェクトの間隔を設定します。
今回は0,0で設定しました。

・範囲/方向
→コピー範囲と方向を設定します。
今回は画像+テンポラリエリアの1→2↙3→4で設定しました。

・インクリメント対象
→インクリメント数を設定します。
今回は+1なので、一括:1で設定しました。

コピーしたい情報を設定出来たらOKを押します。

オセロ-GOT-連続コピー003

OK選択後、設定した情報を元にコピーしてくれます。
※ダブルワードの連続コピーは設定しているインクリメント数の倍になるので注意してください。
仕様デス。

スイッチの透明化

透明化する方法を紹介します。

オセロ-GOT-透明スイッチ001

スイッチを選択して右クリックしてください。
スタイルタブの図形をクリックします。

オセロ-GOT-透明スイッチ002

「なし」を選択すると、透明化になります。

前面と背面レイヤの区分け

今回はワードランプの上にスイッチを配置するので、前面と背面で区分けします。
デフォルトは背面なので、透明スイッチだけ前面レイヤへ移動します。

オセロ-GOT-前面背面切り替え

スイッチのみ選択して、プロパティ→拡張機能→レイヤを前面に変更
※スイッチ全部まとめて編集することも可能です。

今後の展開(次回予告)

ここまでで、GOT画面の制作と基本的な操作方法について紹介しました。
次回はいよいよ、PLCのラダー回路で「石をひっくり返す処理」や「合法手の判定」など、ゲームの核となるロジック部分に挑戦します。

ラダーでゲームを動かす仕組みは少し複雑ですが、できるだけわかりやすく段階的に解説していく予定です。
PLCでの遊び心あふれる制御に興味がある方はぜひご期待ください!

それでは、次回もどうぞお楽しみに!

前回記事

PLC×GOTでオセロ制作にチャレンジしてみた【第1回】

次回記事

PLC×GOTでオセロ制作にチャレンジしてみた【第3回】

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