楽にDxLibを使うためのテンプレ
よく使う処理をテンプレにする
ループ処理
namespace System {
bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}
namespace System {
bool Update() { return (DxLib::ScreenFlip() != -1 && DxLib::ClearDrawScreen() != -1 && DxLib::ProcessMessage() != -1); }
}
Update()
関数で画面の更新・画面消去・メッセージ処理をします。
ループ処理をいちいち書くのは面倒なのでまとめました。
Siv3Dライクな書き方をしています。
前処理
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();
}
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 関数
はプログラム開始時の前処理を書く場所として使用します。
上記のサンプルコードでは最低限使用する関数のみが書かれています。
実際に使用するときは"画面サイズ変更"関数"や"タイトル変更"関数を加えます。
メイン処理
void Main() {
//メインループ
while (System::Update()) {}
}
void Main() {
//メインループ
while (System::Update()) {}
}
メインの処理はvoid Main()
に書きます。
while (System::Update())
で簡単にメインループが使用できます。
テンプレ完成
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()) {}
}
コメント無し版
#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()) {}
}
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()) {
}
}
楽ちん版
#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()) {
}
}
ソースコードのライセンス
#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()) {}
}
#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()) {}
}
#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()) {
}
}
#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.
ソースコードは自由に使用してください。
Author And Source
この問題について(楽にDxLibを使うためのテンプレ), 我々は、より多くの情報をここで見つけました https://qiita.com/gis/items/b6f4a959c9a1d38c914d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .