Skip to content

DxLib初級サンプル(C言語風)

Kasugaccho edited this page Apr 30, 2019 · 1 revision

サンプルコード

縦横 同じサイズで地形生成

#include <DxLib.h>
#include <DTL.hpp>

//二次元配列の大きさを設定する
#define matrix_size (128)

//1マスの大きさ(ピクセル数)を設定する
#define dungeon_pixel_size (2)

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	SetOutApplicationLogValidFlag(FALSE);
	ChangeWindowMode(TRUE);

	//画面サイズを設定する
	SetGraphMode(matrix_size*dungeon_pixel_size, matrix_size*dungeon_pixel_size, 32);

	//DxLibの初期化
	if (DxLib_Init() == -1) return -1;

	//二次元配列を宣言
	int matrix[matrix_size][matrix_size]{};

	//二次元配列にダンジョンを生成する
	dtl::shape::SimpleVoronoiIsland<int>(100, 0.5, 1, 0).draw(matrix, matrix_size, matrix_size);
	dtl::utility::CellularAutomation<int>().draw(matrix, matrix_size, matrix_size);

	//二次元配列を描画する
	for (int row = 0; row < matrix_size; ++row) {
		for (int col = 0; col < matrix_size; ++col) {
			DrawBox(col*dungeon_pixel_size, row*dungeon_pixel_size, (col + 1)*dungeon_pixel_size, (row + 1)*dungeon_pixel_size, (matrix[row][col]) ? GetColor(98, 170, 48) : GetColor(30, 30, 163), TRUE);
		}
	}

	//静止させる
	WaitKey();

	//DxLibの終了
	return DxLib_End();
}

sample

縦横 異なるサイズで地形生成

#include <DxLib.h>
#include <DTL.hpp>

//二次元配列のX方向の大きさを設定する
#define matrix_size_x (196)

//二次元配列のY方向の大きさを設定する
#define matrix_size_y (128)

//1マスの大きさ(ピクセル数)を設定する
#define dungeon_pixel_size (2)

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	SetOutApplicationLogValidFlag(FALSE);
	ChangeWindowMode(TRUE);

	//画面サイズを設定する
	SetGraphMode(matrix_size_x*dungeon_pixel_size, matrix_size_y*dungeon_pixel_size, 32);

	//DxLibの初期化
	if (DxLib_Init() == -1) return -1;

	//二次元配列を宣言
	int matrix[matrix_size_y][matrix_size_x]{};

	//二次元配列にダンジョンを生成する
	dtl::shape::SimpleVoronoiIsland<int>(100, 0.5, 1, 0).draw(matrix, matrix_size_x, matrix_size_y);
	dtl::utility::CellularAutomation<int>().draw(matrix, matrix_size_x, matrix_size_y);

	//二次元配列を描画する
	for (int row = 0; row < matrix_size_y; ++row) {
		for (int col = 0; col < matrix_size_x; ++col) {
			DrawBox(col*dungeon_pixel_size, row*dungeon_pixel_size, (col + 1)*dungeon_pixel_size, (row + 1)*dungeon_pixel_size, (matrix[row][col]) ? GetColor(98, 170, 48) : GetColor(30, 30, 163), TRUE);
		}
	}

	//静止させる
	WaitKey();

	//DxLibの終了
	return DxLib_End();
}

sample2

生成ループ

#include <DxLib.h>
#include <DTL.hpp>

//二次元配列のX方向の大きさを設定する
#define matrix_size_x (196)

//二次元配列のY方向の大きさを設定する
#define matrix_size_y (128)

//1マスの大きさ(ピクセル数)を設定する
#define dungeon_pixel_size (2)

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
	SetOutApplicationLogValidFlag(FALSE);
	ChangeWindowMode(TRUE);

	//画面サイズを設定する
	SetGraphMode(matrix_size_x*dungeon_pixel_size, matrix_size_y*dungeon_pixel_size, 32);

	//DxLibの初期化
	if (DxLib_Init() == -1) return -1;
	SetDrawScreen(DX_SCREEN_BACK);

	//二次元配列を宣言
	int matrix[matrix_size_y][matrix_size_x]{};

	const int loop_counter_max = 20;
	int loop_counter = loop_counter_max;

	while (ScreenFlip() == 0 && ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {

		if (loop_counter >= loop_counter_max) {

			//二次元配列にダンジョンを生成する
			dtl::utility::Init<bool>(0).draw(matrix, matrix_size_x, matrix_size_y);
			dtl::shape::SimpleVoronoiIsland<int>(100, 0.5, 1, 0).draw(matrix, matrix_size_x, matrix_size_y);
			dtl::utility::CellularAutomation<int>().draw(matrix, matrix_size_x, matrix_size_y);
			loop_counter = 0;
		}
		//二次元配列を描画する
		for (int row = 0; row < matrix_size_y; ++row) {
			for (int col = 0; col < matrix_size_x; ++col) {
				DrawBox(col*dungeon_pixel_size, row*dungeon_pixel_size, (col + 1)*dungeon_pixel_size, (row + 1)*dungeon_pixel_size, (matrix[row][col]) ? GetColor(98, 170, 48) : GetColor(30, 30, 163), TRUE);
			}
		}
		++loop_counter;
	}

	//静止させる
	WaitKey();

	//DxLibの終了
	return DxLib_End();
}

sample3

Clone this wiki locally