Perl版DxLib 1.0公開::他言語版DxLib制作記 [v0.3]

トントン
記事: 100
登録日時: 14年前

Perl版DxLib 1.0公開::他言語版DxLib制作記 [v0.3]

投稿記事 by トントン » 12年前

本当は、休み前にリリースしたかったのですが
完全に遅れてしまいました。
# 仕事が忙しかったという言い訳で逃げます><


■Perl版 DXライブラリ
Ver.1.00をリリースします。
Perl版 DXライブラリは自分が作成したラッパーから
Swigを用いてPerlでも使用できるようにしたものです。

DxLibのリファレンスに載っている関数は以下の注意事項1に記載されているものを除いて全て実装はしてあります。
今回添付したファイルの対応バージョンは
DXライブラリ : v3.08e
Perl : Active Perl-v5.14 -5.16。
Strawberry Perlで使用できるかは確認していません。

使用方法についてはサンプルを参照してください。

■注意事項1
・引数の省略記号が入っている関数は実装していません。
・リファレンスに載っていない関数は使用できません。
・GetHitKeyStateAll等の引数の値が書き換わるものはエラーで落ちる可能性があります。(というか落ちる)

■注意事項2
一応、リファレンスに載っている関数は実装しているつもりですが
十分なテストをしていません。
正常に機能しない関数、実装されていない関数もある可能性があります。
また、注意事項1に記載されていることは十分に注意してください。

■責任制限について
このライブラリを用いて、何かしら損害を被っても
作成者である私は責任を負担しないものとします、ご了承ください。

■2次配布について
ご自由にしていただいて構いません。
報告も必要ありません。
ただし、各関数を使用するときのライセンスなどについてはDXライブラリと同じ。
Perlで作成したスクリプトについてはArtistic LicenseおよびGPLです。
添付ファイルにあるSwig用のラッパークラスもご自由に改変、配布しても構いません。

■不具合、追加してほしい機能について
不具合があれば、連絡をお願いします。
できる限り対処します。
また、隠し関数で便利な関数があればそれも連絡してください。
できる範囲で実装します。
また、perl-v5.14以前のバージョンが欲しいのであれば
連絡を頂ければこちらでできる限り作成、公開します。
(下はperl-v5.8)

■Sample(使い方と簡単な解説)

CODE:

use strict;
use warnings;
use autodie;

# 実行するスクリプトのパスを探してくれます
use FindBin;
use lib "$FindBin::Bin";

# 日本語処理を正常にしたいときに使ってください
# また、ソースはutf8で保存してください。
use utf8;
use Encode;

# 作成した、DxLibモジュールを呼び出します
use DxLib;

# DxLibで使用できる関数をクラスを実態化してメソッドとして呼び出すようにします
my $dx = DxLib::SwigDxLib->new();

# 以下、key処理、エンコード処理を除けば、ゲームプログラミングの館とほぼ同じです。
$dx->ChangeWindowMode(1);
$dx->DxLib_Init();
$dx->SetDrawScreen($DxLib::DX_SCREEN_BACK);

my $x = 320;
my $y = 240;

my $handle = $dx->LoadGraph("pict.png");
my $cr = $dx->GetColor(0, 200, 0);

my $sjis = find_encoding('cp932');

while ($dx->ScreenFlip() == 0 && $dx->ProcessMessage() == 0 && $dx->ClearDrawScreen() == 0) {
	if ($dx->CheckHitKey($DxLib::KEY_INPUT_RIGHT) >= 1) {
		$x++;
	}
	if ($dx->CheckHitKey($DxLib::KEY_INPUT_DOWN) >= 1) {
		$y++;
	}
	if ($dx->CheckHitKey($DxLib::KEY_INPUT_LEFT) >= 1) {
		$x--;
	}
	if ($dx->CheckHitKey($DxLib::KEY_INPUT_UP) >= 1) {
		$y--;
	}

	$dx->DrawString(0, 0, 'test', $cr);
	$dx->DrawString(0, 50, 'テスト', $cr);
	$dx->DrawString(0, 100, $sjis->encode('テスト'), $cr);
	$dx->DrawRotaGraph($x, $y, 1.0, 0.0, $handle,1,1);
}

$dx->DxLib_End();
画像



以下、雑談。
Perl以外のスクリプトも対応しようと思ったんだけど
思いのほか難しかったので当分実装予定はありません。
Perlは簡単だった。。。(リファレンスに載っているものはw
誰か、ほかの言語で実装して公開してください><
※swigは以下の言語を使えるよ
AllegroCL, C# - Mono ,C# - MS .NET, CFFI ,CHICKEN , CLISP
D,Go language, Guile, Java, Lua,,MzScheme/Racket, Ocaml
Octave, Perl ,PHP, Python, R, Ruby, Tcl/Tk

Perl用のSwigの使い方は、次あたりの記事で。

ラッパー変換スクリプトも本当は公開したかったんだけども
実装優先でソースが汚くなりすぎたので修正後に公開します。

Dixqさんが言っていた
>実行速度的な面が非常に気になります!もし日記に続編があればパフォーマンス比較等の情報を期待!
スイマセンけど後回しで。。。
(どうやってベンチマーク的なものを取るか知らないんで調べてから。)

後は、これを気にPerlとか他のスクリプト言語に手を出してくれると嬉しいです。
(DXライブラリを他の言語でも使用できるようにするという意味で)
また、自分でも一通りテストを実施したら掲示板でもテスト依頼を出すかもなので
ご協力お願いします。(C言語掲示板だけど。。。><)
添付ファイル

[拡張子 zip は無効化されているため、表示できません]

最後に編集したユーザー トントン on 2012年10月21日(日) 04:45 [ 編集 4 回目 ]

コメントはまだありません。