MicroMouse Maze Library
3703225
|
区画ベースではなく、壁ベースの管理ID [詳解]
#include <Maze.h>
公開メンバ関数 | |
constexpr | WallIndex () |
デフォルトコンストラク [詳解] | |
constexpr | WallIndex (const int8_t x, const int8_t y, const uint8_t z) |
成分を受け取ってそのまま格納するコンストラクタ [詳解] | |
constexpr | WallIndex (const Position p, const Direction d) |
表現の冗長性を除去して格納するコンストラクタ [詳解] | |
constexpr | WallIndex (const uint16_t i) |
IDを使って初期化するコンストラクタ [詳解] | |
bool | operator== (const WallIndex i) const |
等号 [詳解] | |
bool | operator!= (const WallIndex i) const |
等号否定 [詳解] | |
uint16_t | getIndex () const |
迷路内の壁を一意な通し番号として表現したIDを返す。 [詳解] | |
Position | getPosition () const |
位置の取得 [詳解] | |
Direction | getDirection () const |
方向の取得 [詳解] | |
bool | isInsideOfField () const |
壁がフィールド内か判定する関数 [詳解] | |
WallIndex | next (const Direction d) const |
引数方向の WallIndex を取得する関数 [詳解] | |
std::array< Direction, 6 > | getNextDirection6 () const |
現在壁に隣接する、柱ではない6方向を取得 [詳解] | |
公開変数類 | |
union { | |
struct { | |
int8_t x | |
区画座標のx成分 [詳解] | |
int8_t y: 7 | |
区画座標のy成分 [詳解] | |
uint8_t z: 1 | |
区画内の壁の位置。0:East, 1:North [詳解] | |
} | |
uint16_t data | |
データ全体へのアクセス用 [詳解] | |
}; | |
静的公開変数類 | |
static constexpr int | SIZE = MAZE_SIZE_MAX * MAZE_SIZE_MAX * 2 |
壁を unique な通し番号として表現したときの総数。 配列の確保などで使用できる。 [詳解] | |
フレンド | |
std::ostream & | operator<< (std::ostream &os, const WallIndex i) |
表示用演算子のオーバーロード。 ( x, y, d) の形式 [詳解] | |
区画ベースではなく、壁ベースの管理ID
uint16_t にキャストすることで全部の壁が通し番号になったIDを 取得できるという特徴がある。 迷路内部の壁の総数 WallIndex::SIZE 個の配列を確保しておけば、 取得したIDをインデックスとして使える。そのとき、 WallIndex が 迷路の内部にあるかどうか確認すること。(配列の範囲外アクセス防止) isInsideOfField() 関数により迷路の内部に位置するか確認できる。 最初から全部が通し番号のIDで保持してしまうと、 迷路の範囲外の壁を表現できなくなってしまうため、 必要に応じてIDを生成するようになっている。
|
inlineconstexpr |
デフォルトコンストラク
|
inlineconstexpr |
|
inlineconstexpr |
IDを使って初期化するコンストラクタ
i | 壁の通し番号ID。迷路内の壁であること。 |
|
inline |
方向の取得
|
inline |
迷路内の壁を一意な通し番号として表現したIDを返す。
|
inline |
現在壁に隣接する、柱ではない6方向を取得
|
inline |
壁がフィールド内か判定する関数
(x, y) が (0, 0) と (MAZE_SIZE-1, MAZE_SIZE-1) の間、かつ、 z が外周上でない
|
inline |
等号否定
|
inline |
等号
|
friend |
union { ... } |
uint16_t MazeLib::WallIndex::data |
データ全体へのアクセス用
|
staticconstexpr |
壁を unique な通し番号として表現したときの総数。 配列の確保などで使用できる。
int8_t MazeLib::WallIndex::x |
区画座標のx成分
int8_t MazeLib::WallIndex::y |
区画座標のy成分
uint8_t MazeLib::WallIndex::z |
区画内の壁の位置。0:East, 1:North