Presentation is loading. Please wait.

Presentation is loading. Please wait.

Minoのブロック配置のデータ構造 K.Yonezawa.

Similar presentations


Presentation on theme: "Minoのブロック配置のデータ構造 K.Yonezawa."— Presentation transcript:

1 Minoのブロック配置のデータ構造 K.Yonezawa

2 MinoBlocksクラスの必要性 MinoクラスのインスタンスはMinoのブロック並びを管理し、TetrisFieldインスタンスにそのブロック並びが有効(置ける)かを問い合わせる 「Minoのブロック並び」を保持するクラスがあると、一度に複数ブロック座標をまとめてTetrisFieldに渡すことが出来て楽

3 MinoBlocksクラスの要件 N個(Create時に指定)のブロック座標と状態(色)が保持できること
出来れば、無駄なメモリが不要なようにしたい TetrisFieldオブジェクトが、MinoBlocksで表せるMinoとぶつからないか判別できること 移動が簡単に出来ること 上下左右 回転させることが出来ること 将来的に複雑なMinoを実装する場合、回転出来ると便利 (TetraMinoの場合はあまり重要ではないが…)

4 MinoBlocksの表現法 ベース座標とそこからの相対座標(ベクトル)により表す Block(i)の絶対座標
(0, -1) (1, -1) Base (1, 0) (1, 1) Block(i)の絶対座標 = Baseの絶対座標 + Block(i)の相対座標

5 MinoBlockの移動 Base座標にのみ移動分を加えればよい Base += offset (2次元ベクトル)
(0, -1) (1, -1) Base (1, 0) (1, 1) (OLD) Base += offset (2次元ベクトル) offset (2, -2)

6 MinoBlockの回転 Base座標を中心とした回転なら、各相対座標の単純計算だけで事足りる 90度 90度回転
(0, -1) B (1, -1) Base C (1, 0) D (1, 1) 90度 Base A (1, 0) D (-1, 1) C (0, 1) B (1, 1) 90度回転 回転後x = - 回転前y 回転後y = 回転前x 270度回転 回転後x = 回転前y 回転後y = -回転前x


Download ppt "Minoのブロック配置のデータ構造 K.Yonezawa."

Similar presentations


Ads by Google