top of page

Claris FileMakerで遊べるゲーム作ってみた 後編 1/2

更新日:2024年10月24日


こんにちは。ティーマネジメントの田中です。


こちらは後半記事 1/2となります。


前半記事で15パズルについての説明を行いました。

後半記事では、15パズルをどのようにFileMaker データベースで実現したかの考え方について、解説できればと思っています。

ご興味のある方はぜひご覧ください。


ゲームが遊べたらいい、という方は、前半記事の方にFileMakerファイルと、45日間の無料評価版FileMakerがダウンロードできる、Claris公式リンクをつけておりますので、前半記事をご覧ください。




マス番号とパネル

15パズルでは、16個のマスが必要になります。

まず、16個のマスに1~16までの番号をつけて、管理できるようにします。

これをマス番号とします。

続いて、それぞれのマスについて、「行番号」と「列番号」を考えます。

タテが行、ヨコが列です。


それぞれのマスについて、行番号と列番号を表にすると、

このようになります。

行番号は、「マス番号を4で割った数から、切り上げた整数」

列番号は、「マス番号を4で割った余りの数(余りが0となる場合は4とする)」

という考え方で求めることができます。


この行番号と列番号は後の計算に使います。


次に、仮に1から15までのパネルを配置してみます。

これは、完成となる配置から規定回数ランダムに動かした配置なので、「詰み」の配置ではありません。

「詰み」となる配置についても、後に解説します。


説明用として作ったパネルの配置を使いましょう。

正しい配置と、現在の番号について表に当てはめると、次のようになります。

さて、ゲームをクリアするには、パネルを動かしていく必要があります。

つまり、今配置されているパネルの中で、「動かせるパネル」「動かせないパネル」が存在します。

仮に配置した画像を見て頂くと分かるのですが、ここで動かせるのは「7」と「15」のパネルです。

ということは、マス番号でいうと「12」と「15」です。

空きマスとなるマス番号は「16」なので、

「16」が空いているときは、「12」「15」に配置されているパネルを、「16」に移動できる ということになります。



マスの選択とパネルの移動

先ほどの表に、「このパネルは移動することができるか」というステータスを設定してみます。

1と0の値で表します。1は可能、0は不可能です。

マス番号が16に隣接するマス番号は、12 , 15 です。

隣接するマスは、行番号と列番号を使って、条件をつけることができます。

文章にしてみると、


①     空欄マス(16)と同じ行(4)にあり、列の値の差が1であること。

もしくは、

②     空欄マス(16)と同じ列(4)にあり、行の値の差が1であること。


です。


マス番号12について上記の条件を考えると、

空欄マスと同じ列(4)にあり、行の値の差は 4 - 3 = 1であることから、条件に当てはまります。


マス番号15について上記の条件を考えると、

空欄マスと同じ行(4)にあり、列の値の差は 4 - 3 = 1であることから、条件に当てはまります。


条件に当てはまったときは1 , 当てはまらないときは0として考えると、先ほどの表のようになります。



ユーザの操作を考える

スライドができるパネル、できないパネルを先ほどの表で示しました。

次に、ユーザの操作を考えます。

マス番号を選択して、空いているマスにスライドしますので、マス番号を選択したときにスクリプトを実行して、スクリプト引数としてはマス番号を設定しておけば、

選択したマスがスライドできる場合の処理、スライドできない場合の処理、という風に場合分けできます。


後は、この処理を繰り返していき、

正しい配置

になっているか、判定すればOKです。


パズルを動かす方法と、ゲームクリアの判定について、実装方法はこれでよさそうです。

ゲームを始める前に、パネルをランダムに並べる必要があります。

これもスクリプトで行います。

次に、パネルの初期配置について考えていきます。


次回へ続きます… 次の記事へ (2024/10/24追記)  → Claris FileMakerで遊べるゲーム作ってみた 後編 2/2

bottom of page