ゲーム開発ライブラリ
mplib 憩いの場
mplibとは
2Dゲーム(Widnowsアプリケーション)開発に最低限の機能を提供するライブラリファイルです。
※ダウンロードしたファイルによる一切の責任は負いかねます、ご了承ください。
二次配布はご遠慮ください。mplibを使用したソフトを公開する場合は著作表示頂けますと幸いです。
mplibを使用した作品のご報告・ご投函を歓迎致します、お問い合わせよりご連絡ください。
導入方法
あくまで一例なのでご使用の環境に合わせて設定してください。
VisualStudio2022 使用例
新しいプロジェクトの作成
空のプロジェクト ⇒ 次へ
フォルダの選択・プロジェクト名の入力 ※任意なものを選択・入力して作成
3までで作成したプロジェクトファイルのあるフォルダにmplibフォルダを貼り付け
プロジェクトにmain.cを追加
メニューバー ⇒ プロジェクト ⇒ プロパティ をクリック
構成をすべての構成に変更
構成プロパティ ⇒ C/C++ ⇒ 全般 ⇒ 追加のインクルードディレクトリ に 「$(SolutionDir)mplib」と入力
構成プロパティ ⇒ リンカー ⇒ 全般 ⇒ 追加のライブラリディレクトリ に 「$(SolutionDir)mplib」と入力
構成プロパティ ⇒ リンカー ⇒ 入力 ⇒ 追加の依存ファイル に「mplib.lib」と入力
構成プロパティ ⇒ リンカー ⇒ システム ⇒ サブシステム を「Windows」に変更
適用 ⇒ OK
システム
ウィンドウ生成
mplibを初期化します。アプリケーションの先頭で呼び出してください。
void mlCreateWindow(const char* title, int width, int height, BOOL fullSize);
戻値:なし
引数:
width
アプリケーションウィンドウ横サイズ
height
アプリケーションウィンドウ縦サイズ
fullSize
非0:フルウィンドウ
補足:取り扱う座標情報はスクリーン座標系です(左上起点の0~指定サイズになります)
アプリケーションの終了確認
int mlQuit(void);
戻値:
非0でメインループの終了待ちに入っている。
引数:なし
サンプル
#include <mplib.h>
int main()
{
// ウィンドウ生成 ※必ず初めに生成する事
mlCreateWindow("Sample", 640, 480, 0);
// アプリケーションの終了確認 ※×を押した場合など
while(!mlQuit())
{
// ゲームループ
}
}
描画バッファ
描画バッファ生成
mlBuffer mlCreateBuffer(void);
戻値:
描画バッファ
引数:なし
描画バッファクリア
指定の色で描画バッファを塗りつぶします。
void mlClearBuffer(mlBuffer pBuffer, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
rgb
塗りつぶし色(RGB値)
描画バッファのフリップ
アプリケーションウィンドウに描画バッファを反映します。
void mlFlip(mlBuffer pBuffer);
戻値:なし
引数:
pBuffer
描画バッファ
描画バッファの削除
描画バッファの削除、使用領域のメモリを解放します。
void mlReleaseBuffer(mlBuffer pBuffer);
戻値:なし
引数:
pBuffer
描画バッファ
サンプル
#include <mplib.h>
int main()
{
// ウィンドウ生成
mlCreateWindow("Sample", 640, 480, 0);
// 描画バッファ生成
mlBuffer drawBuffer = mlCreateBuffer();
// アプリケーションの終了確認
while(!mlQuit())
{
// 描画バッファの初期化
mlBufferClear(drawBuffer, mlRGB(0xFF, 0xFF, 0xFF));
// ~
// ゲームループ
// ~
// フリップ
mlBufferFlip(drawBuffer);
}
// 終了処理
// 描画バッファ削除
mlBufferRelease(drawBuffer);
}
描画バッファの指定座標の色情報取得
描画バッファ内の指定座標からRGB値を取得します。描画バッファ範囲外は不定です。
int mlGetColor(mlBuffer pBuffer, int x, int y);
戻値:
RGB値
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
プリミティブ描画
描画:点(1dot) .
void mlDrawPoint(mlBuffer pBuffer, int x, int y, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
rgb
描画色(RGB値)
描画:線 ー
void mlDrawLine(mlBuffer pBuffer, int x1, int y1, int x2, int y2, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x1
始点:ウィンドウ座標X
y1
始点:ウィンドウ座標Y
x2
終点:ウィンドウ座標X
y2
終点:ウィンドウ座標Y
rgb
描画色(RGB値)
描画:線(透過指定)ー
void mlDrawLineA(mlBuffer pBuffer, int x1, int y1, int x2, int y2, int rgb, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x1
始点:ウィンドウ座標X
y1
始点:ウィンドウ座標Y
x2
終点:ウィンドウ座標X
y2
終点:ウィンドウ座標Y
rgb
描画色(RGB値)
alpha
アルファ値(透過:0~255)
描画:矩形描画(中抜き)□
void mlDrawRect(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
描画:矩形描画(中塗り)■
void mlDrawFillRect(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
描画:矩形描画(中抜き:透過指定)□
void mlDrawRectA(mlBuffer pBuffer, int x, int y, int width, int height, int rgb, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
alpha
アルファ値(透過:0~255)
描画:矩形描画(中塗り:透過指定)■
void mlDrawFillRectA(mlBuffer pBuffer, int x, int y, int width, int height, int rgb, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
alpha
アルファ値(透過:0~255)
描画:楕円描画(中抜き)〇
void mlDrawOval(mlBuffer pBuffer, int x, int y, int width, int height, int think, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
think
線幅(太さ)
rgb
描画色(RGB値)
描画:楕円描画(中塗り)●
void mlDrawFillOval(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
描画:楕円描画(中抜き:透過指定)〇
void mlDrawOvalA(mlBuffer pBuffer, int x, int y, int width, int height, int think, int rgb, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
think
線幅(太さ)
rgb
描画色(ARGB値)
alpha
アルファ値(透過:0~255)
描画:楕円描画(中塗り:透過指定)●
void mlDrawFillOvalA(mlBuffer pBuffer, int x, int y, int width, int height, int rgb, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
alpha
アルファ値(透過:0~255)
ビットマップ(.bmp)
ビットマップ読み込み
指定ファイル(.bmp)を読み込みます。
mlBitmap mlLoadBmp(char bmpPath[]);
戻値:
ビットマップ型情報
引数:
bmpPath
ビットマップファイルへのファイルパス
ビットマップ読み込み(透過色指定)
指定ファイル(.bmp)を読み込みます。指定したマスク色は描画されません。
mlBitmap mlLoadBmpT(char bmpPath[], int rgb);
戻値:
ビットマップ型情報
引数:
bmpPath
ビットマップファイルへのファイルパス
rgb
マスク色指定(RGB値)
ビットマップ情報:横幅取得
int mlGetBmpWidth(mlBitmap pBitmap);
戻値:
横幅
引数:
pBitmap
ビットマップ型情報
ビットマップ情報:高さ取得
int mlGetBmpHeight(mlBitmap pBitmap);
戻値:
高さ
引数:
pBitmap
ビットマップ型情報
ビットマップ削除
void mlReleaseBmp(mlBitmap pBitmap);
戻値:なし
引数:
pBitmap
ビットマップ型情報
ビットマップ描画
読み込んだビットマップ情報を指定座標(左上起点)に描画します。
void mlDrawBmp(mlBuffer pBuffer, int x, int y, mlBitmap pBitmap);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
pBitmap
ビットマップ型情報
ビットマップ描画:拡縮
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し描画します。
void mlDrawBmpScale(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
ビットマップ描画:拡縮 + ビットマップ位置指定
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し、任意のビットマップ位置・大きさ分を描画します。
void mlDrawBmpCoord(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap, int sx, int sy, int swidth, int sheight);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
sx
ビットマップ位置(左上隅)X
sy
ビットマップ位置(左上隅)Y
swidth
ビットマップ大きさ指定横幅
sheight
ビットマップ大きさ描画指定高さ
ビットマップ描画:拡縮 + ビットマップ位置指定 + 指定軸回転
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し、任意のビットマップ位置・大きさ分を起点座標から指定度数回転させて描画します。
void mlDrawBmpRotate(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap, int sx, int sy, int swidth, int sheight, int cx, int cy, double rotate);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
sx
ビットマップ位置(左上隅)X
sy
ビットマップ位置(左上隅)Y
swidth
ビットマップ大きさ指定横幅
sheight
ビットマップ大きさ描画指定高さ
cx
回転軸座標X
cy
回転軸座標Y
rotate
角度(時計回り)
ビットマップ描画:拡縮(透過指定)
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し描画します。
void mlDrawBmpScaleA(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
alpha
アルファ値(~255)
ビットマップ描画:拡縮 + ビットマップ位置指定(透過指定)
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し、任意のビットマップ位置・大きさ分を描画します。
void mlDrawBmpCoordA(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap, int sx, int sy, int swidth, int sheight, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
sx
ビットマップ位置(左上隅)X
sy
ビットマップ位置(左上隅)Y
swidth
ビットマップ大きさ指定横幅
sheight
ビットマップ大きさ描画指定高さ
alpha
アルファ値(~255)
ビットマップ描画:拡縮 + ビットマップ位置指定 + 指定軸回転
読み込んだビットマップ情報を指定座標(左上起点)に大きさを指定し、任意のビットマップ位置・大きさ分を起点座標から指定度数回転させて描画します。
void mlDrawBmpRotateA(mlBuffer pBuffer, int x, int y, int width, int height, mlBitmap pBitmap, int sx, int sy, int swidth, int sheight, int cx, int cy, double rotate, int alpha);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
pBitmap
ビットマップ型情報
sx
ビットマップ位置(左上隅)X
sy
ビットマップ位置(左上隅)Y
swidth
ビットマップ大きさ指定横幅
sheight
ビットマップ大きさ描画指定高さ
cx
回転軸座標X
cy
回転軸座標Y
rotate
角度(時計回り)
alpha
アルファ値(~255)
サウンド ※主にSE用
WAVデータ:読み込み
指定ファイル(.wav)を読み込みます
mlWAV mlLoadWAV(const char* wavPath);
戻値:
WAVデータ型情報
引数:
wavPath
WAVファイルへのファイルパス
WAVデータ:再生
void mlPlayWAV(mlWAV pSound, int loop);
戻値:なし
引数:
pSound
WAVデータ型情報
loop
非0でループ再生指定
WAVデータ:停止
void mlStopWAV(mlWAV pSound);
戻値:なし
引数:
pSound
WAVデータ型情報
WAVデータ:削除
void mlReleaseWAV(mlWAV pSound);
戻値:なし
引数:
pSound
WAVデータ型情報
サウンド(重ねて再生できません)※主にBGM用
サウンドデータ:読み込み
指定ファイル(wav・mp3・mid)を読み込みます
mlSnd mlLoadSnd(const char* sndPath);
戻値:
サウンドデータ型情報
引数:
sndPath
サウンドファイル(wav・mp3・mid)へのファイルパス
サウンドデータ:再生
単チャネルのため再生中のサウンドデータは停止します。
void mlPlaySnd(mlSnd pSound, int loop);
戻値:なし
引数:
pSound
サウンドデータ型情報
loop
非0でループ再生指定
サウンドデータ:停止
void mlStopSnd(mlSnd pSound);
戻値:なし
引数:
pSound
サウンドデータ型情報
サウンドデータ:一時停止
void mlPauseSnd(mlSnd pSound);
戻値:なし
引数:
pSound
サウンドデータ型情報
サウンドデータ:再生(再開)
void mlResumeSnd(mlSnd pSound);
戻値:なし
引数:
pSound
サウンドデータ型情報
サウンドデータ:削除
void mlReleaseSnd(mlSnd pSound);
戻値:なし
引数:
pSound
サウンドデータ型情報
テキスト
フォントデータ作成
mlFont mlFontCreate(int size, int bold, const char* face);
戻値:
フォント型データ
引数:
size
フォント大きさ(高さ)
bold
1:ボールド指定(文字を太く)
face
フォント名
テキスト表示
int mlPrintf(mlBuffer pBuffer, int x, int y, mlFont font, int rgb, const char* format, ...);
戻値:
表示文字列幅(width)
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
font
フォント型データ ※NULL=デフォルトフォント
rgb
色指定(RGB値)
format
表示文字列(可変長)
テキスト表示(アンカー指定+透過指定)
int mlPrintf2(mlBuffer pBuffer, int x, int y, mlFont font, int anchor, int argb, const char* format, ...);
戻値:
表示文字列幅(width)
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
font
フォント型データ ※NULL=デフォルトフォント
anchor
-1:左揃え 0:中央ぞろえ 1:右揃え
argb
色指定(ARGB値)
format
表示文字列(可変長)
フォントデータ削除
void mlFontRelease(mlFont font);
戻値: なし
引数:
font
フォント型データ
入力
キー入力情報取得
int mlGetKeyState(int nVirtKey);
戻値:
非0で押している
引数:
nVirtKey
仮想キーコード
マウス位置(ウィンドウ座標)取得
void mlGetMousePos(int* x, int* y);
戻値: なし
引数:
*x
マウス位置ウィンドウ座標X 格納先ポインタ
*y
マウス位置ウィンドウ座標Y 格納先ポインタ
マウス位置(ウィンドウ座標)設定
void mlSetMousePos(int x, int y);
戻値: なし
引数:
x
ウィンドウ座標X
y
ウィンドウ座標Y
ユーティリティ
経過時間取得
アプリケーション起動時からの経過時間(ミリ秒)を取得
mlTime mlGetTime(void);
戻値:
経過時間(ミリ秒)
引数:なし
指定(ミリ)秒待機
指定秒、処理が止まります。
void mlWait(mlTime ms);
戻値:なし
引数:
ms
待機時間(ミリ秒)