Puzzle Game / Unity Project

TetrisPuzzle

Learning Project

10×20の盤面でブロックを操作し、横一列をそろえて消していく落ちものパズルです。 盤面データと画面上のブロックを対応させる方法や、処理を役割ごとに分ける設計を学ぶために制作しました。

Overview

プロジェクト概要

Unity 6とC#を使用した学習プロジェクトです。 7種類のブロックを操作して積み上げ、そろったラインの削除、上段ブロックの落下、スコア更新、ゲームオーバーまでの基本的な流れを実装しています。

Status
Learning Project
Engine
Unity 6(6000.2.13f1)
Language
C#
Input
キーボード(矢印キー)

Implementation

実装した主な機能

10×20の盤面管理

固定された各マスを2次元配列で保持し、空きマスと配置済みブロックを判定できるようにしています。

ブロック操作

矢印キーによる左右移動、下移動、90度回転と、時間経過による自動落下を実装しています。

移動可能判定

ブロックを構成する4マスを確認し、壁・床・固定済みブロックとの重なりを防いでいます。

ライン削除

横一列が埋まったかを走査し、そろった行を削除した後、その上にあるブロックを一段下へ移動します。

次ブロック表示

次に出現するブロックを先に生成して表示し、出現時に操作対象へ切り替える流れを作っています。

スコアとゲーム終了

ライン削除時のスコア加算、積み上がった際のゲームオーバー表示、シーンを再読み込みするリトライを実装しています。

Code Structure

処理の分け方

操作中のブロックと盤面全体の管理を別のクラスへ分けています。 ブロックが落下している間と、着地して盤面へ登録した後で担当を切り替える構成です。

BlockController
キー入力、自動落下、移動、回転、着地の通知
TetrisPuzzleSceneDirector
盤面登録、当たり判定、ライン削除、スコア、次ブロック、ゲーム終了
Transform[,]
固定済みの各マスを10×20の盤面データとして保持

Learning

学んだこと・改善したいこと

2次元配列を使った盤面管理、座標と配列番号の変換、当たり判定後に位置を戻す処理、クラス間の役割分担を学びました。 今後は連続したライン削除の確認、操作感の調整、定数と処理の整理などを進めたいと考えています。