クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  三目並べを作ろう(2)
作成日:2024年08月08日

三目並べを作ろう(2)

イメージイラスト
にゃん太

どうも、にゃん太です

今回のメモは、三目並べを作ろう(1)の続きです

前回はレイアウトイメージを考える所まで進めました

今回は、テーブル構造や必要なスクリプトについて考えていきます


テーブル構造を考える
アプリの大まかな機能から見て戦績を保存するテーブルが必要となります
レイアウトイメージから考えれると、戦績テーブルは対戦日、モード、勝敗といったフィールドで構成されます
戦績テーブルの構造
次に、一時記録する項目について考えます
一部は変数に記録でも良いのですが、とりあえずグローバルフィールドへ保存する事にしましょう

上記に基づいてテーブル構造を作ろうと思ったのですが、盤面の状態について少し悩みます
テキストで〇×(まるばつ)表示しても良いのですが、画像表示でも良いかもしれません
という訳で、オブジェクトフィールドにする事にしました
また、ついでに勝敗表示も画像表示しましょう
一時記録テーブルの構造
そして画像を使用するなら、その画像はフィールドに保存して使用するのが効率的です
画像保管テーブルの構造
テーブル構造は概ねこんな所ですね
細かい変更があれば適宜対応する事にします

必要なスクリプト
レイアウトイメージに沿って、順に考えていきます
まずはタイトル画面では、対戦ボタン、戦績ボタンが配置されますので、それに応じたスクリプトが必要です
対戦ボタン
対戦モード選択画面へ移動する。その際、モード選択の初期値を設定する
 ・参加人数:1
      ・難易度:接待
      ・手番の選択:先手
戦績ボタン
戦績表示画面へ移動する。その際、戦績を降順に表示する
次に対戦モード選択画面では、各モードの選択を切り替えた際に一時記録フィールドの内容を更新する処理が必要です
※わざわざスクリプト処理せずにフィールドをラジオボタンなどで直接変更する仕組みでもよかったのですが、レイアウト的な都合でボタンによるスクリプト処理にしています
1人用対戦
参加人数フィールドの値を「1」にします
接待
難易度フィールドの値を「接待」にします
本気
難易度フィールドの値を「本気」にします
先手
手番の選択フィールドの値を「先手」にします
後手
手番の選択フィールドの値を「後手」にします
2人用対戦
参加人数フィールドの値を「2」にします
対戦開始
盤面の値を初期化した上で、対戦画面へ切り替えます
参加人数1、手番が後手の場合はCOM手番も実行します
そして対戦画面では、手番時に指定場所に自分の手を書きこむ処理、投了処理、レイアウトイメージにはありませんが、勝敗が決した後の再戦、対戦モード選択画面への戻る処理が必要です
打ち手の書き込み処理
自分の手番の際に指定した升目に打ち手を書き込む処理
既に書き込まれている場所は、レイアウト的に手を打てなくするか、スクリプト内で処理無効にする
その後、勝敗が付いたかを判定し、勝敗が付いていれば結果を表示する
勝敗が付いていなければ、手番を進める
COM手番処理
難易度に沿ったCOMの次手処理を行う
具体的な手法はまた改めて考える
投了
勝負を諦め、負けで終了
勝敗が決した場合の処理へ進める
再戦
モードを維持したまま、新しい対戦を開始
戻る
対戦モード選択画面へ戻る
最後に戦績表示画面では、タイトル画面へ戻る処理が必要です
ついでに、戦績をクリアする処理も追加しましょう
戻る
タイトル選択画面へ戻る
戦績クリア
過去の戦績を全て抹消する

思いつくまま書いていますが、下準備はこれくらいですね
不足などありましたら作りながら適宜追加/修正する事にしましょう
次回から、これまでの内容に基づいて実際のアプリを始めます


メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム