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);
戻値:なし
引数:
title
ゲーム画面に表示するタイトル名
width
ゲーム画面の横幅
height
ゲーム画面の高さ
fullSize
TRUE(1):フルサイズ FALSE(0):ウィンドウ表示
使用例:ゲームタイトルという名前を付けて、横幅640・高さ480のウィンドウ表示を作成
mlCreateWindow("ゲームタイトル", 640, 480, FALSE);
int mlQuit(void);
戻値:
ゲーム画面の×ボタンを押したら1
それ以外は0が戻り値として帰る
引数:なし
#include <mplib.h>
int main()
{
// ウィンドウ生成
mlCreateWindow("Sample", 640, 480, FALSE);
// ゲームループ
while (mlQuit() == 0)
{
}
}
mlBuffer mlCreateBuffer(void);
戻値:
描画バッファ
引数:なし
使用例:描画バッファを作ってmlBuffer型の変数bufferで保持しています。
mlBuffer buffer = mlCreateBuffer();
描画バッファとは絵を書くための紙をイメージしてください。
紙に描いた表示物をmlFlipという関数によってゲーム画面に反映(フリップ)します。
指定の色で描画バッファを塗りつぶします。
void mlClearBuffer(mlBuffer pBuffer, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
rgb
塗りつぶし色(mlRGB値)
使用例:描画バッファを黒く塗りつぶします。
mlClearBuffer(buffer, mlRGB(0, 0, 0));
ゲーム画面(アプリケーションウィンドウ)に描画バッファを反映(フリップ)します。
void mlFlip(mlBuffer pBuffer);
戻値:なし
引数:
pBuffer
描画バッファ
使用例:
mlFlip(buffer);
描画バッファの削除、使用領域のメモリを解放します。
void mlReleaseBuffer(mlBuffer pBuffer);
戻値:なし
引数:
pBuffer
描画バッファ
#include <mplib.h>
int main()
{
// ウィンドウ生成
mlCreateWindow("Sample", 640, 480, 0);
// 描画バッファ生成
mlBuffer buffer = mlCreateBuffer();
// ゲームループ
while(mlQuit() == 0)
{
// 描画バッファの初期化
mlBufferClear( buffer, mlRGB(0, 0, 0) );
// フリップ
mlBufferFlip(drawBuffer);
}
// 終了処理
// 描画バッファ削除
mlBufferRelease(buffer);
}
描画バッファ内の指定座標からRGB値を取得します。
int mlGetColor(mlBuffer pBuffer, int x, int y);
戻値:
RGB値
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
指定のXY座標に1つの点を描画バッファに描きます。
void mlDrawPoint(mlBuffer pBuffer, int x, int y, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
rgb
描画色(RGB値)
開始点から終了点に伸びる1直線を描画バッファに描きます。
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値)
開始点から終了点に伸びる1直線を描画バッファに描きます。アルファ値(0~255)で透明度を指定することが出来ます。
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)
指定のXY座標に□を描画バッファに描く事ができます。
void mlDrawRect(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
指定のXY座標に■を描画バッファに描く事ができます。
void mlDrawFillRect(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
指定のXY座標に□を描画バッファに描く事ができます。アルファ値(0~255)で透明度を指定することが出来ます。
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)
指定のXY座標に■を描画バッファに描く事ができます。アルファ値(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)
指定のXY座標に〇を描画バッファに描く事ができます。
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値)
指定のXY座標に●を描画バッファに描く事ができます。
void mlDrawFillOval(mlBuffer pBuffer, int x, int y, int width, int height, int rgb);
戻値:なし
引数:
pBuffer
描画バッファ
x
ウィンドウ座標X
y
ウィンドウ座標Y
width
横幅
height
高さ
rgb
描画色(RGB値)
指定のXY座標に〇を描画バッファに描く事ができます。アルファ値(0~255)で透明度を指定することが出来ます。
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)
指定のXY座標に●を描画バッファに描く事ができます。アルファ値(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)を読み込みます。
mlBitmap mlLoadBmp(char bmpPath[]);
戻値:
ビットマップ型
引数:
bmpPath
ビットマップファイルへのファイルパス(ファイル名)
使用例:画像読み込み(bmpという変数に読み込んだ画像情報を代入している)
mlBitmap bmp = mlLoadBmp("sample.bmp");
指定ファイル(.bmp)を読み込みます。透過色に指定した色は描画されません。
mlBitmap mlLoadBmpT(char bmpPath[], int rgb);
戻値:
ビットマップ型
引数:
bmpPath
ビットマップファイルへのファイルパス(ファイル名)
rgb
透過色指定(RGB値)
使用例:画像読み込み(bmpという変数に読み込んだ画像情報を代入している) 画像ファイルに含まれる赤い部分は表示されない
mlBitmap bmp = mlLoadBmp("sample.bmp", mlRGB(255, 0, 0));
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)
指定ファイル(.wav)を読み込みます
mlWAV mlLoadWAV(const char* wavPath);
戻値:
WAVデータ型情報
引数:
wavPath
WAVファイルへのファイルパス
void mlPlayWAV(mlWAV pSound, int loop);
戻値:なし
引数:
pSound
WAVデータ型情報
loop
非0でループ再生指定
void mlStopWAV(mlWAV pSound);
戻値:なし
引数:
pSound
WAVデータ型情報
void mlReleaseWAV(mlWAV pSound);
戻値:なし
引数:
pSound
WAVデータ型情報
指定ファイル(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);
戻値:
1で押している、0で押していない
引数:
nVirtKey
仮想キーコード
仮想キーコードについては:コチラ
使用例:
// 上キーが押されていたら
if (mlGetKeyState(VK_UP) == 1)
{
// 処理を書く
}
// キーボードの a が押されていたら
if (mlGetKeyState('a') == 1)
{
// 処理を書く
}
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
待機時間(ミリ秒)