Skip to content

Matrixの種類

Kasugaccho edited this page May 2, 2019 · 14 revisions

Matrixの種類

当ライブラリがサポートしているMatrixの種類は5種類存在する。

名称 関数指定
STL系 draw(matrix)
レイヤーSTL系 draw(matrix, 選択レイヤー)
生配列系 draw(matrix, 横幅, 縦幅)
レイヤー生配列系 draw(matrix, 選択レイヤー, 横幅, 縦幅)
一次元配列系 drawArray(matrix, 横幅, 縦幅)

それぞれの種類のサンプルコードを以下に示す。

STL系

ソースコード

#include <DTL.hpp>
#include <cstddef>
#include <cstdint>
#include <array>

int main() {

	using shape_t = std::uint_fast8_t;
	constexpr std::size_t width{ 16 };
	constexpr std::size_t height{ 8 };

	std::array<std::array<shape_t, width>, height> matrix{ {} };

	dtl::shape::Border<shape_t>(1).draw(matrix);

	dtl::console::OutputStringBool<shape_t>("#","/").draw(matrix);

}

出力結果

################
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
################

レイヤーSTL系

ソースコード

#include <DTL.hpp>
#include <cstddef>
#include <cstdint>
#include <array>

int main() {

	using shape_t = std::uint_fast8_t;
	constexpr std::size_t width{ 16 };
	constexpr std::size_t height{ 8 };
	constexpr std::size_t layer_max{ 2 };
	constexpr std::size_t draw_layer{ 1 };

	std::array<std::array<std::array<shape_t, layer_max>, width>, height> matrix{ {} };

	dtl::shape::Border<shape_t>(1).draw(matrix, draw_layer);

	dtl::console::OutputStringBool<shape_t>("#", "/").draw(matrix, draw_layer);

}

出力結果

################
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
################

生配列系

ソースコード

#include <DTL.hpp>
#include <cstddef>
#include <cstdint>
#include <array>

int main() {

	using shape_t = std::uint_fast8_t;
	constexpr std::size_t width{ 16 };
	constexpr std::size_t height{ 8 };

	shape_t matrix[height][width]{};

	dtl::shape::Border<shape_t>(1).draw(matrix, width, height);

	dtl::console::OutputStringBool<shape_t>("#", "/").draw(matrix, width, height);

}

出力結果

################
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
################

レイヤー生配列系

ソースコード

#include <DTL.hpp>
#include <cstddef>
#include <cstdint>
#include <array>

int main() {

	using shape_t = std::uint_fast8_t;
	constexpr std::size_t width{ 16 };
	constexpr std::size_t height{ 8 };
	constexpr std::size_t layer_max{ 2 };
	constexpr std::size_t draw_layer{ 1 };

	shape_t matrix[height][width][layer_max]{};

	dtl::shape::Border<shape_t>(1).draw(matrix, draw_layer, width, height);

	dtl::console::OutputStringBool<shape_t>("#", "/").draw(matrix, draw_layer, width, height);

}

出力結果

################
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
################

一次元配列系

ソースコード

#include <DTL.hpp>
#include <cstddef>
#include <cstdint>
#include <array>

int main() {

	using shape_t = std::uint_fast8_t;
	constexpr std::size_t width{ 16 };
	constexpr std::size_t height{ 8 };

	shape_t matrix[height*width]{};

	dtl::shape::Border<shape_t>(1).drawArray(matrix, width, height);

	dtl::console::OutputStringBool<shape_t>("#", "/").drawArray(matrix, width, height);

}

出力結果

################
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
#//////////////#
################
Clone this wiki locally