dHell

dHell

目次

  • これは何?
  • ダウンロード
  • 変更履歴
  • 機能
  • ビルド方法
  • 使い方
  • 特殊なキーの動作
  • サンプルゲーム
  • 「dHell」リファレンス
    • Hell_init(char caption, int width, int height, bool fullscreen=false)
    • Hell_quit()
    • Hell_write(char msg)
    • Hell_write(int msg)
    • Hell_write(Exception e)
    • Hell_fillRect(int x=0, int y=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00)
    • Hell_loadBMP(char key, char filepath, int r=-2, int g=0, int b=0)
    • Hell_draw(char key, int px, int py, int sx=0, int sy=0, int sw=0, int sh=0)
    • Hell_setAlpha(char key, int alpha)
    • Hell_getMouseX
    • Hell_getMouseY
    • Hell_isPressMouse
    • Hell_isPushMouse
    • Hell_isPressKey
    • Hell_isPushKey
    • Hell_loadWAV(char key, char path)
    • Hell_playWAV(char key, int loops=0)
    • Hell_stopWAVAll()
    • bool Hell_isPressJKey(int id)
    • bool Hell_isPushJKey(int id)
    • bool Hell_isPressJButton(int id)
    • bool Hell_isPushJKey(int id)
    • Hell_playBgm(char path, int loops=-1, int ms=0)
    • Hell_stopBgm(int ms=0)
    • Hell_drawFont(char msg, int x, int y)

これは何?

D言語で簡単にゲームが作れるようにライブラリを作ってみました。

ただし、プリミティブな機能しかありません。が。

D言語のお試しとして、使ってみるのもいいかもしれません。

変更履歴

  • 2007.1.23 - DMD 1.00に対応。makefileを添付。
  • 2007.12.1 - おめがさんのFPS安定処理を取り込む
  • 2007.11.1 - とりあえず公開してみる

機能

今のところこんな感じです。

まー、最低限の機能しかありませねー。

ビルド方法

build.batをテキストファイルで開いて、

D言語コンパイラ・リンカのパスを設定します。

(パスを通してあるのであれば、必要ありません)

で、build.batを実行します。

使い方

「test.d」を編集していきます。

なんか色々ありますが、最低限必要なコードはこれだけです。

 import hell;
 
 void main()
 {
 	try
 	{
 		// Hellシステム初期化(キャプション"Hell" 640x480)
 		Hell_init("Hell", 640, 480);
 		// ゲームループ開始
 		while(true)
 		{
 			// 画面更新
 			Hell_update();
 			// 33ms待つ
 			Hell_wait(33);
 		}
 	}
 	catch(Exception e)
 	{
 		// 例外をログに書き込み
 		Hell_write(e);
 	}
 	finally
 	{
 		// Hellシステム終了
 		Hell_quit();
 	}
 }

注意が必要なのは、「try~catch~finally」です。

ウィンドウが閉じられたときには、Hell_wait()が例外を返します。

その場合、catchして、ログの出力をし、Hell_quit()で終了します。

画像ファイルが存在しなかった場合など、「run.log」にエラーが書き込まれるので、

それを参照します。

特殊なキーの動作

サンプルゲーム

  • 散歩ゲー2>http://www5f.biglobe.ne.jp/~kenmo/dest/d/asc2.lzh?---あの散歩ゲー2がパワーアップして帰ってきた!!

dHellリファレンス

Hell_init(char[] caption, int width, int height, bool fullscreen=false)

dHell初期化します。

  • パラメータ
    • caption ウィンドウタイトル文字列
    • width 画面縦サイズ
    • height 画面横サイズ
    • fullscreen フルスクリーンフラグ

Hell_quit()

dHellの終了処理を行います。

Hell_write(char[] msg)

ログファイル「run.log」にメッセージを書き込みます。

Hell_write(int msg)

ログファイル「run.log」に数値を書き込みます。

Hell_write(Exception e)

ログファイル「run.log」に例外情報の書き込みを行います。

Hell_fillRect(int x=0, int y=0, int w=0, int h=0, int r=0x00, int g=0x00, int b=0x00)

矩形を描画します。

Hell_loadBMP(char key, char filepath, int r=-2, int g=0, int b=0)

BMPを読みこみます。

  • パラメータ
    • key 画像のキー(Hell_drawで使います)
    • filepath 画像ファイルのパス
    • r,g,b カラーキー(r=-2のとき抜き色なし。r=-1のとき左上(0, 0)を抜き色にする

Hell_draw(char[] key, int px, int py, int sx=0, int sy=0, int sw=0, int sh=0)

BMPを描画します。

sx,sy,sw,shを省略すると、BMP全体を描画します。

  • パラメータ
    • key 画像のキー(Hell_loadBMPで指定したkey
    • px,py 左上座標
    • sx,sy 切り取り開始座標(左上)※省略可
    • sw,sh 切り取りする幅・高さ※省略可

Hell_setAlpha(char[] key, int alpha)

画像にアルファ値を設定します

Hell_getMouseX

マウスのX座標を取得します。

Hell_getMouseY

マウスのY座標を取得します。

Hell_isPressMouse

マウスを押し続けているかどうかを判定するフラグを取得します。

●使い方

if(Hell_isPressMouse() & HELL_BUTTON_LEFT)

{

printf("press left");

}

if(Hell_isPressMouse() & HELL_BUTTON_MIDDLE)

{

printf("press middle");

}

if(Hell_isPressMouse() & HELL_BUTTON_RIGHT)

{

printf("press right");

}

Hell_isPushMouse

マウスをそのフレームに押したかどうかを判定するフラグを取得します。

●使い方

if(Hell_isPushMouse() & HELL_BUTTON_LEFT)

{

printf("push left");

}

if(Hell_isPushMouse() & HELL_BUTTON_MIDDLE)

{

printf("push middle");

}

if(Hell_isPushMouse() & HELL_BUTTON_RIGHT)

{

printf("push right");

}

Hell_isPressKey

キーを押し続けているかどうかを判定するフラグを取得します。

●使い方

if(Hell_isPressMouse(HELL_DOWN))

{

printf("press down");

}

if(Hell_isPressMouse(HELL_RIGHT))

{

printf("press right");

}

if(Hell_isPressMouse(HELL_LEFT))

{

printf("press left");

}

Hell_isPushKey

キーをそのフレームに押したかどうかを判定するフラグを取得します。

●使い方

if(Hell_isPushMouse(HELL_RETURN))

{

printf("push return");

}

if(Hell_isPushMouse(SDLK_z))

{

printf("push z");

}

if(Hell_isPushMouse(HELL_UP))

{

printf("push up");

}

Hell_loadWAV(char key, char path)

SEWAVファイル)を読み込みます

  • パラメータ
    • key キー(Hell_playWAVで使います)
    • path サウンドファイルのパス

Hell_playWAV(char[] key, int loops=0)

SEWAVファイル)を再生します

Hell_stopWAVAll()

SEWAVファイル)の再生を全て停止します。

bool Hell_isPressJKey(int id)

ジョイスティック十字キーを押しているかどうかを調べます。

●使い方

if(Hell_isPressJKey(HELL_J_UP))

{

printf("press up");

}

if(Hell_isPressJKey(HELL_J_DOWN))

{

printf("press down");

}

if(Hell_isPressJKey(HELL_J_LEFT))

{

printf("press left");

}

if(Hell_isPressJKey(HELL_J_RIGHT))

{

printf("press right");

}

bool Hell_isPushJKey(int id)

ジョイスティック十字キーを押したかどうかを調べます。

●使い方

if(Hell_isPushJKey(HELL_J_UP))

{

printf("push up");

}

if(Hell_isPushJKey(HELL_J_DOWN))

{

printf("push down");

}

if(Hell_isPushJKey(HELL_J_LEFT))

{

printf("push left");

}

if(Hell_isPushJKey(HELL_J_RIGHT))

{

printf("push right");

}

bool Hell_isPressJButton(int id)

ジョイスティックのボタンを押しているかどうかを調べます。

●使い方

if(Hell_isPressJButton(0))

{

printf("press 1button");

}

if(Hell_isPressJButton(1))

{

printf("press 2button");

}

if(Hell_isPressJButton(2))

{

printf("press 3button");

}

if(Hell_isPressJButton(3))

{

printf("press 4button");

}

bool Hell_isPushJKey(int id)

ジョイスティックのボタンを押したかどうかを調べます。

●使い方

if(Hell_isPushJButton(0))

{

printf("push 1button");

}

if(Hell_isPushJButton(1))

{

printf("push 2button");

}

if(Hell_isPushJButton(2))

{

printf("push 3button");

}

if(Hell_isPushJButton(3))

{

printf("push 4button");

}

Hell_playBgm(char[] path, int loops=-1, int ms=0)

BGMを再生します

Hell_stopBgm(int ms=0)

BGMを停止します

Hell_drawFont(char[] msg, int x, int y)

フォントの描画(asciiのみです)