悩み

XNAテトリスで悩んでること

今、XNA(マイクロソフト製のゲームフレームワーク)でテトリスを作っている。
で、テトリミノの表現と関連処理の実装のために次のようなクラスを作っている。

Minoクラス
・IDプロパティ(抽象)
・ミノを構成するブロック情報
・「ミノを構成するブロック情報」を生成するメソッド(抽象)
・位置情報
・方向番号
・落下とか回転とか移動の処理
・コンストラクタ
↑の「ミノを構成するブロック情報」を生成するメソッドを呼んで、
それをミノを構成するブロック情報に代入する

↓(継承)

Mino0クラス~Mino6クラス(棒ミノや四角ミノの種類ごとに1つ)

・IDプロパティの実装
棒ミノを表すmino0クラスなら、return 0;を返す 等

・「ミノを構成するブロック情報」を生成するメソッドの実装
棒ミノを表すmino0クラスなら、
方向0・・・ (-1,0 0,0 1,0 2,0)
方向1・・・ (0,-1 0,0 0,1 0,2)
方向2・・・ (-2,0 -1,0 0,0 1,0)
方向3・・・ (0,-2 0,-1 0,0 0,1)
といったようなデータを返す


といったような感じです。(自分だけ分かればいいやー(テキトー
落下ミノとしてmino0~mino6をランダムに生成して、それを落下させています。

で、ここでミノが落下する地点を半透明で表示する「落下ガイド」を実装したくなったので、
すでにあるこのminoクラスの落下処理を利用したいと思いました。

落下しているminoクラスをコピーして落下ガイド用minoクラスを作ればいいのかな?
と思ったんだけど、それでいいのか?と悩んでるところ。

なぜか。
「ミノを構成するブロック情報」を回転や移動させるたびにコピーする必要がある。
参照だけコピーしとけば軽いと思うけど、それならそもそも落下するミノを生成する時点での
「ミノを構成するブロック情報」生成処理もどっかから参照してくればいいんじゃね?
とか設計ダメジャンと考えてるなう。

(そもそもコンストラクタでブロック情報生成のメソッド呼んでるから、
 今のままじゃコピーといっても毎回生成しちゃうんじゃ・・)

そんな今日この頃。
分かりやすく書いてなくてすいません。頭の中がそのまま吐き出されてます。

とりあえず悩んでることだけでもまとめといたほうがいいと思って。
たぶん、これからの記事もそうなっていくかと・・。
記事検索
livedoor プロフィール
QRコード
QRコード

トップに戻る