Sliding Puzzle / Unity Project
SlidePuzzle
15枚のピースと1つの空きマスで構成した4×4のスライドパズルです。 空きマスとの位置関係、解ける配置を保つシャッフル、全ピースの完成判定を学ぶために制作しました。
Overview
プロジェクト概要
Unity 6とC#を使用した学習プロジェクトです。 クリックまたはタップしたピースが空きマスに隣接している場合だけ位置を交換し、すべてのピースが開始時の正解位置へ戻ったかを確認します。
- Status
- Learning Project
- Engine
- Unity 6(6000.2.13f1)
- Language
- C#
- Input
- マウス / タッチ / ペン(Input System)
Implementation
実装した主な機能
正解位置の保存
ゲーム開始時に16個の要素それぞれの位置をリストへ保存し、後のクリア判定に使用します。
移動可能なシャッフル
空きマスに隣接しているピースだけを候補にし、その中からランダムに選んで位置を交換します。
ポインター入力
Input Systemから押下と画面座標を取得し、ワールド座標へ変換して2Dコライダーを調べます。
隣接判定
選択したピースと空きマスの距離を確認し、上下左右に隣接している場合だけ移動可能と判定します。
ピースの移動
選択したピースと空きマスの座標を一時変数を使って交換し、空き位置を更新します。
クリア判定
操作後に全ピースの現在位置と保存した正解位置を比較し、すべて一致した場合にクリアと判定します。
リトライ
クリア時にボタンを表示し、SlidePuzzleSceneを再読み込みしてもう一度開始できます。
Code Structure
処理の分け方
- pieces
- 空きマスを含む16個の要素を管理し、先頭要素を空きマスとして使用
- startPositions
- 各要素の正解位置をpiecesと同じ順番で保持
- GetEmptyPiece
- 選択したピースが空きマスと隣接しているかを判定
- SwapPiece
- 2つの要素が存在することを確認して位置を交換
Learning
学んだこと・改善したいこと
リストの順番と座標を対応させる方法、空きマスとの隣接判定、解ける移動だけを使ったシャッフル、全要素の一致判定を学びました。 今後はシャッフル回数と偏りの調整、クリア画面、経過時間、効果音などを追加したいと考えています。