Tetris Project
※「DLLがないよ」と警告が出たら、d3dx9_31.dllを C:\WINDOWS\system32 に設置してください。
2007/05/01 ver 0.01
2007/05/02 ver 0.02
2007/05/03 ver 0.03
2007/05/12 ver 0.04
2007/05/19 ver 0.05
→ダウンロード(テスト用全3面)

- クリア条件を設定した(ステージ開始時に存在するすべてのデブリを消去したらクリア)

- 初期デブリの位置をファイルから読み込むようにした

- スタート画面、エンディング画面に遷移するようにした


<感想>

基本的な遷移部分は作ったかなー。画面を飾っていく作業をしたいけど、消すにしたがってスピードアップしていく部分など作ってないのでそちらを優先してやっていこう。

- 上矢印を押すことでコメットを強制的に落下するように変更した

- プレイヤーミスの判定を行った

- プレイヤーがミスしたときに、「GameOver」の文字とともにロックで埋まったフィールドを表示した

- フレームレートの制御および表示を行った

- ポーズ(一時停止)できるようにした

- スコアの表示を行った

- 次のコメットを生成するタイマーを修正した


<感想>

得点など目に見える部分よりも、裏側の処理のほうが時間がかかります。特にコメット生成や落下を制御するタイマーはちゃんと処理してやらないとゲームとしてバランスがとれないので調整が大変でした。まだ完全ではないけど、ゲームとして楽しめるものに近づいていると思います。

→ダウンロード

- タイマー機能を実装し、一定間隔ごとにコメットが落下してくるようにした

- 落下して位置が確定したコメットをフィールド内に登録した

- 一つの行がそろうとその上の行が一つずつ下がるようにした

- ゲーム開始時にコメットが自動で落下してくるようにした

- コメットが落下し位置が確定した後、次のコメットが落下するようにした

- 次に落ちてくるコメットの予告表示を行った


<感想>

テトリスとしてはだいたい機能を作ったかなぁっていう感じです。ここまでで一週間くらいかかると思っていたので、予定より進んでいます。ここから飾っていくのが楽しいところw

→ダウンロード

- ユーザがオブジェクトを動かせるようにした

- ユーザが操作可能なブロック(コメット)の動作可能範囲をフィールド内に限定した

- コメットの形状を定義した

- コメットが横移動、回転できるようにした

- キーを押している間に連続して回転や移動が行われないようにした

- すでにロックが存在している場合、回転や移動をできないようにした


<感想>

まだゲームにはなっていないものの、重要な部分を作成しました。全体の3分の1くらいはできたのではないでしょうか。これからこれから。

- プロジェクトを作成した

- 既存のライブラリをプロジェクトに追加した

- ビューポートの設定を行った

- ブロックの表示位置を調整した

- モデル(Xファイル)の表示テストを行った


各クラスの役割は次の通り(基盤部分のみ。音声管理クラスなど順次追加予定) →クラス図0.01
クラス名 主な役割 備考
CGame メッセージハンドラ、ウィンドウ作成、メッセージループ (ライブラリ)
CInput キーボード、ジョイスティックの入力 (ライブラリ)
CGraphic デバイスの初期化、ウィンドウモードの切り替え (ライブラリ)
CImage テクスチャの管理、ビューポートの設定 (ライブラリ)
CTetris 各種初期化、描画、移動などの指示 CGameを継承
CObjectManager 3Dモデル、音声ファイル、フィールドなどのオブジェクトを管理 -
CField 格子領域内(フィールド)におけるブロックの状態の保持とコメットの生成・消去 -
CComet 落ちてくるブロック(コメット)の操作と状態保持 -

<感想>

「一週間でテトリスを作ることは可能か?」とふと思って作り始めた思い当たり企画ですw 前回のシューティングゲームの反省をもとに、最初に仕様やゲームの構成を考えてみました。

まだプログラム部分にはほとんど手をつけてないんですが、仕様がどんどん変わっていっちゃいそうな予感w