本ページでは、ボード管理用プログラムについて説明を追記頂ける方を募集しています。
説明の追記方法は、Pull Requestを送る
を参照下さい。
ここでは board_manager.py の解説を行う。
このファイルにはテトリミノの 形状、回転方向を担う Shape Class と、画面ボードの各種処理を行う BoardData Class がある。 block_controller.py 側からもよく使うメソッドが多いので解説を書いておく。
ここでは、board_manager.py の Shape Class について解説する。 Shape Class は下記テトリミノの形状について保持しているクラスである。
ShapeI | ShapeL | ShapeJ | ShapeT | ShapeO | ShapeS | ShapeZ | |
---|---|---|---|---|---|---|---|
index値 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
初期形状 | |||||||
1周の回転に必要な回数 | 2 | 4 | 4 | 4 | 1 | 2 | 2 |
詳細は、ブロック情報 に詳しく記載がある。
getRotatedOffsets メソッドは テトリミノ形状を回転した基準座標からの相対座標を返します。 引数として direction テトリミノ回転方向を指定する。
ブロック操作の基準点の形状番号を direction で指定すると、ここで書かれている相対座標が返される。
getCoords メソッドは さらに x,y を引数に持ち、x,y を基準点に置いたテトリミノの絶対座標を返す。
getBoundingOffsets メソッドはテトリミノの基準点からの最大 x, y 最小x, y を取得する。 direction で回転方向を指定し、minX, maxX, minY, maxY が返ってくる。
ここでは、board_manager.py の BoardData Class について解説する。 BoardData Class は画面ボードに配置されているテトリミノ情報が格納されており、画面ボードの処理はこの Class において行う。
現状の画面ボードデータを返す。一次元配列である。
画面ボードデータコピーし動いているテトリミノデータを付加し、その画面ボードデータを返す。
引数として x,y を指定し画面ボード上のその座標のテトリミノの有無(およびその種類)を返す。 返り値は Shape Class の index値。何もないなら 0。
direction (回転状態)のテトリミノ座標配列を取得し、それをx,yに配置した場合の座標配列を返す
予告テトリミノ配列の長さを返す
テトリミノクラスデータ, テトリミノ座標配列、テトリミノ回転種類を返す
引数
ShapeClass ... Shape のオブジェクト
返値
ShapeClass ... Shape のオブジェクト
ShapeIdx ... Shape Class の index値
ShapeRange ... Shape Class の回転方向配列。Oミノなら (0,) Lミノなら (0,1,2,3)。
テトリミノの index 番号から shape オブジェクトを返す
引数
ShapeNumber ... テトリミノの index
返値
ShapeClass ... Shape のオブジェクト
ホールドしている Shape オブジェクトを返す
colorTableを返す
index を指定して、nextShapeIndexList の d, x, y を返す
引数
index
返値
d
x
y
画面ボードに固着したテトリミノを書き込む
次のテトリミノの index 取得
画面ボード上に新しいテトリミノの配置。配置できなかったら False を返す。
direction 方向で x,y へ2回配置して動かせなかったら Reset
HOLD 入れ替え
画面ボードの消去できるラインを探して消去し、画面ボードを更新、そして消した Line を返す
テトリミノを direction 方向で x,y に動かせるかどうか確認する 動かせない場合 tryMove メソッドを使い False を返す
direction (回転状態)のテトリミノ座標配列を取得し、それをx,yに配置可能か判定する 配置できない場合 False を返す
テノリミノを1つ落とし消去ラインとテトリミノ落下数を返す
テトリミノを一番下まで落とし消去ラインとテトリミノ落下数を返す
左へテトリミノを1つ動かす 失敗したら False を返す
右へテトリミノを1つ動かす 失敗したら False を返す
右回転させる 失敗したら False を返す
左回転させる 失敗したら False を返す
画面ボードと現テトリミノ情報をクリア
初期障害物配置。Level3 Level4 用。