楽にDxLibを使うためのテンプレ

#よく使う処理をテンプレにする

##ループ処理

```cpp
namespace System {
	bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}
```
**`Update()`**関数で**画面の更新・画面消去・メッセージ処理**をします。
ループ処理をいちいち書くのは面倒なのでまとめました。

Siv3Dライクな書き方をしています。

#前処理

```cpp
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	//初期化前に書く処理
	DxLib::ChangeWindowMode(TRUE);

	//初期化
	if (DxLib::DxLib_Init() == -1) return -1;
	
	//初期化後に書く処理
	DxLib::SetDrawScreen(DX_SCREEN_BACK);

	Main();
	return DxLib::DxLib_End();
}
```

メイン関数(の役割を担う関数)を**`void Main()`**に移しました。
**`int WINAPI WinMain 関数`はプログラム開始時の前処理を書く場所**として使用します。

上記のサンプルコードでは最低限使用する関数のみが書かれています。
実際に使用するときは**"画面サイズ変更"関数"や"タイトル変更"関数を加えます。**

#メイン処理

```cpp
void Main() {

	//メインループ
	while (System::Update()) {}

}
```

メインの処理は**`void Main()`**に書きます。
**`while (System::Update())`**で簡単にメインループが使用できます。

#テンプレ完成

```cpp:Source.cpp
#include "DxLib.h"

//ループ
namespace System {
	bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}

void Main();

//前処理を書く場所
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	//初期化前に書く処理
	DxLib::ChangeWindowMode(TRUE);

	//初期化
	if (DxLib::DxLib_Init() == -1) return -1;
	
	//初期化後に書く処理
	DxLib::SetDrawScreen(DX_SCREEN_BACK);

	Main();
	return DxLib::DxLib_End();
}

//メイン関数
void Main() {

	//メインループ
	while (System::Update()) {}

}
```

```cpp:コメント無し版
#include "DxLib.h"

namespace System {
	bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}

void Main();

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	DxLib::ChangeWindowMode(TRUE);
	if (DxLib::DxLib_Init() == -1) return -1;
	DxLib::SetDrawScreen(DX_SCREEN_BACK);
	Main();
	return DxLib::DxLib_End();
}

void Main() {

	while (System::Update()) {}

}
```

```cpp:C++17サンプル
#include <DxLib.h>

namespace System {
	bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}

void Main();

int WINAPI WinMain([[maybe_unused]]HINSTANCE hInstance, [[maybe_unused]]HINSTANCE hPrevInstance, [[maybe_unused]]LPSTR lpCmdLine, [[maybe_unused]]int nCmdShow)
{
	DxLib::SetOutApplicationLogValidFlag(FALSE);
	DxLib::ChangeWindowMode(TRUE);
	DxLib::SetGraphMode(512, 512, 32);
	if (DxLib::DxLib_Init() == -1) return -1;
	DxLib::SetDrawScreen(DX_SCREEN_BACK);
	DxLib::SetMainWindowText("Sample");
	Main();
	return DxLib::DxLib_End();
}

void Main() {

	while (System::Update()) {
	
	}

}
```

```cpp:楽ちん版
#include "DxLib.h"

namespace System {
	bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}

void Main();

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
	DxLib::SetOutApplicationLogValidFlag(FALSE);
	DxLib::ChangeWindowMode(TRUE);
	DxLib::SetGraphMode(512, 512, 32);
	DxLib::SetMainWindowText("Sample");
	if (DxLib::DxLib_Init() == -1) return -1;
	DxLib::SetDrawScreen(DX_SCREEN_BACK);
	Main();
	return DxLib::DxLib_End();
}

void Main() {

	while (System::Update()) {
	

	
	}

}
```

##ソースコードのライセンス

These codes are licensed under CC0.
[![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg "CC0")](http://creativecommons.org/publicdomain/zero/1.0/deed.ja)

ソースコードは自由に使用してください。