クリック画像の実寸表示

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

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

三目並べを作ろう(6)

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

どうも、にゃん太です

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

ようやく本体となる対戦画面の作成となります


対戦画面を作成
対戦画面のレイアウトイメージ
レイアウトイメージに合わせてレイアウトを作成します
機能面から考慮して、非表示機能を使用して一部ボタンは対戦中のみ/決着後のみ表示する様にします
対戦画面のレイアウト 対戦画面・対戦中 対戦画面の決着後
必要なスクリプトは7つあります
このうち、コンピュータ側の打ち手処理は複雑なので後回しにします
また、対戦モードを維持して対戦を開始する処理は「対戦開始」スクリプトをそのまま適用できますので、それ以外を作成していきます

対戦モード選択画面へ戻る処理

スクリプト

# ################################################## # 対戦画面から対戦モード選択画面へ戻る # 作成日:2024年08月21日 # ################################################## レイアウト切り替え [「対戦モード選択」(一時記録); アニメーション: 右から反転]

手を打つ処理

スクリプト

# ################################################## # 盤面に手を打つ # 作成日:2024年08月21日 # ################################################## 変数を設定 [$param; 値: Get ( スクリプト引数 )] フィールドを名前で設定 ["一時記録::盤面" & $param; If ( 一時記録::次の手番 = "先手"; 画像保管::アイコン[1]; 画像保管::アイコン[2]] 変数を設定 [$i; 値: 1] Loop [フラッシュ: 延期] Exit Loop If [GetField ( "一時記録::手順" & $i ) = ""] 変数を設定 [$i; 値: $i + 1] End Loop フィールドを名前で設定 ["一時記録::手順" & $i; $param] スクリプト実行 [指定: 一覧から; 「勝敗判定」; 引数: ] If [一時記録::勝敗 = ""] フィールド設定 [一時記録::次の手番; If ( 一時記録::次の手番 = "先手"; "後手"; "先手" )] If [一時記録::参加人数 = 1] スクリプト実行 [指定: 一覧から; 「COMによる打ち手判定」; 引数: ] End If End If ウインドウ内容の再表示 []

勝敗判定処理

スクリプト

# ################################################## # 勝敗を判定する # 作成日:2024年08月21日 # ################################################## If [一時記録::次の手番 = "先手"] 変数を設定 [$手筋; 値: 一時記録::手順1 & 一時記録::手順3 & 一時記録::手順5 & 一時記録::手順7 & 一時記録::手順9] Else 変数を設定 [$手筋; 値: 一時記録::手順2 & 一時記録::手順4 & 一時記録::手順6 & 一時記録::手順8] End If If [Length ( Filter ( $手筋; "ABC" ) ) = 3 or Length ( Filter ( $手筋; "DEF" ) ) = 3 or Length ( Filter ( $手筋; "GHI" ) ) = 3 or Length ( Filter ( $手筋; "ADG" ) ) = 3 or Length ( Filter ( $手筋; "BEH" ) ) = 3 or Length ( Filter ( $手筋; "CFI" ) ) = 3 or Length ( Filter ( $手筋; "AEI" ) ) = 3 or Length ( Filter ( $手筋; "CEG" ) ) = 3] フィールド設定 [一時記録::勝敗手筋; Case ( Length ( Filter ( $手筋; "ABC" ) ) = 3; "ABC"; Length ( Filter ( $手筋; "DEF" ) ) = 3; "DEF"; Length ( Filter ( $手筋; "GHI" ) ) = 3; "GHI"; Length ( Filter ( $手筋; "ADG" ) ) = 3; "ADG"; Length ( Filter ( $手筋; "BEH" ) ) = 3; "BEH"; Length ( Filter ( $手筋; "CFI" ) ) = 3; "CFI"; Length ( Filter ( $手筋; "AEI" ) ) = 3; "AEI"; Length ( Filter ( $手筋; "CEG" ) ) = 3; "CEG"; "" )] フィールド設定 [一時記録::勝敗; If ( 一時記録::次の手番 = "先手"; 画像保管::勝敗表示[1]; 画像保管::勝敗表示[2] )] Else If [一時記録::手順9 ≠ ""] フィールド設定 [一時記録::勝敗; 画像保管::勝敗表示[3]] End If スクリプト実行 [指定: 一覧から; 「戦績記録」; 引数: ]

投了処理

スクリプト

# ################################################## # 投了 # 作成日:2024年08月21日 # ################################################## # 相手方の勝利で決着 勝ち筋なし フィールド設定 [一時記録::次の手番; If ( 一時記録::次の手番 = "先手"; "後手"; "先手" )] フィールド設定 [一時記録::勝敗; If ( 一時記録::次の手番 = "先手"; 画像保管::勝敗表示[1]; 画像保管::勝敗表示[2] )] スクリプト実行 [指定: 一覧から; 「戦績記録」; 引数: ] ウインドウ内容の再表示 []

戦績記録

スクリプト

# ################################################## # 戦績を記録する # 作成日:2024年08月21日 # ################################################## If [一時記録::勝敗 ≠ ""] ウインドウの固定 レイアウト切り替え [「戦績閲覧」(戦績); アニメーション: なし] 新規レコード/検索条件 フィールド設定 [戦績::対戦日; Get ( 日付 )] フィールド設定 [戦績::モード; If ( 一時記録::参加人数 = 2; "2人用対戦"; "1人 " & 一時記録::難易度 & " " & 一時記録::手番の選択 )] フィールド設定 [戦績::勝敗; 一時記録::次の手番] レイアウト切り替え [元のレイアウト; アニメーション: なし] End If

これで、2人用対戦が可能になりました
次回はコンピュータ側の打ち手処理を作成し、ようやく完成となります


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

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

内容はいかがでしたか?

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

ご連絡フォーム