[DXLib]DXライブラリとVB.NETを利用してツールを作る[VBNET]
- 2014/01/27
- 21:52
DXライブラリとVB.NETを利用してツールを作る。
前回のキーコンフィグを作っているときに思った。
ゲーム中にキーコンフィグ作るのやだなぁ・・・って。
割とゲームで別実行ファイルでコンフィグできるモノは多く
キーコンフィグだけじゃなく、ゲームレベルやらを設定できるものも多い。
それにああいう画面の方が見やすくGUIを整理しやすいなぁ。
と思ったのでとりあえずやってみることにした。
、NET環境下でDXライブラリが動くことは知っていたので、調べてみる。
C#での開発がサポートされているようだ。
C#で今作成してる画面と同様なことが出来る。とある。
コンソールアプリケーションでガシガシ作っていくみたいだなぁ。
しかし今回やりたいのは「Windowsアプリケーション」で「VB.NET」での作成だ。
どっちも違う。しかしCOMが提供されているのでコレはいけるんでない?
と思い手を出してみた。
まずは前回と同じく開発ツールを落とす。
今回は「Microsoft Visual Basic 2010 Express Edition」であります。
前回同時に落としてしまったのですでに入っていたわけですが
まあ、それは良いでしょう。
そしてDXライブラリはC#の開発キットをダウンロードしましょう。
この中にあるReadme.txtは熟読しておいてください。
そんなに長くないので。
さて、プロジェクトを作って適当に名前を付けて
そして保存。一旦プロジェクトを閉じて・・・ファイルをコピーだ。
bin/Debugとbin/Releaseに「DxLib.dll」「DxLibDotNet.dll」をコピーします。
コレが実行時に必要になるDLLなんだろう。
ここでプロジェクトを起動
「DxLibDotNet.dll」を参照設定しよう。
プロジェクト(ここではDXLibConfigとする)を右クリックしプロパティを開く。
そこの参照のタグを押して画面中央の追加を押下
参照の追加のウィンドウの参照からbin/Debugかbin/Releaseに置いた
「DxLibDotNet.dll」を選択する。参照設定に追加されたことを確認する。
これでOKだ。
これでDXライブラリライフがエンジョイできるんだ。簡単だろ?
あとはコーディングの好みにもよるが
Imports DxLibDLL
Imports DxLibDLL.DX
あたりを追加しておくと便利であろう。
あとはフォームをぐりぐり作っていくのだがひとつ問題がある。
起動するとフォームの前に黒いコンソールっぽいものが表示されるのだ。
これが従来のゲーム画面となりうるわけだが、今回は必要ない。
じゃあ消す方法は?
'ウィンドウモードで起動
ChangeWindowMode(DX.TRUE)
としてあげれば問題ない。
これでフォームは起動する。
今回テスト用に作成したコーディングを軽く載せてみよう。
'起動時の処理
Private Sub DxLibConfig_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ウィンドウモードで起動
ChangeWindowMode(DX.TRUE)
'ログを出力する
SetOutApplicationLogValidFlag(DX.TRUE)
'描画画面は表示しない
SetNotWinFlag(DX.TRUE)
'ライブラリ開始処理
If DxLib_Init() = -1 Then
'起動できなかった場合はアプリケーションを終了する
MsgBox("初期化に失敗しました。", MsgBoxStyle.Critical)
End
End If
End Sub
'終了時の処理
Private Sub DxLibConfig_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
'ライブラリ終了処理
DxLib_End()
End Sub
となる。
あとはコントロール内で処理を書いてあげればいいだけなので簡単。
今回のキーコンフィグで言えば入力情報を取得するだけであれば
' エスケープボタンで終了
While ProcessMessage() = 0 And CheckHitKey(KEY_INPUT_ESCAPE) = 0
'変数宣言
Dim i As Integer = 0
'パッド接続分だけ処理
For i = 1 To GetJoypadNum()
Dim Pad As Integer = GetJoypadInputState(i)
If (Pad <> 0) Then
'情報格納
PadNo = i
PadKeyNo = Pad
msgbox("入力された!")
exit While
End If
Next
End While
みたいに書けば動作する。
↑のソースは上手く動くかはテストしてないので雰囲気だよ雰囲気。
このロジックはボタン押下時に呼んでいるが問題なく動いている。
これでパッドの情報なんかを取得してキーコンフィグとか作れちゃう!
DXライブラリ同士だからデータの共有も容易だしね!
結果はiniファイルを
GetPrivateProfileString
GetPrivateProfileInt
WritePrivateProfileString
WritePrivateProfileInt
あたりで格納して、ゲーム側で読込処理をしてあげればいいんではないか?
セーブデータは別に作るようにしたら、見られてもいいデータになるだろうし
メッセージ処理とかをしなくていい。ってだけでもVBを使う意味はあるんじゃないかな。
ってことで、コレ採用!
ああ。ループ中に応答なしってなる場合はループ中に
'応答なし防止
Application.DoEvents()
を入れてあげると良いよ。
前回のキーコンフィグを作っているときに思った。
ゲーム中にキーコンフィグ作るのやだなぁ・・・って。
割とゲームで別実行ファイルでコンフィグできるモノは多く
キーコンフィグだけじゃなく、ゲームレベルやらを設定できるものも多い。
それにああいう画面の方が見やすくGUIを整理しやすいなぁ。
と思ったのでとりあえずやってみることにした。
、NET環境下でDXライブラリが動くことは知っていたので、調べてみる。
C#での開発がサポートされているようだ。
C#で今作成してる画面と同様なことが出来る。とある。
コンソールアプリケーションでガシガシ作っていくみたいだなぁ。
しかし今回やりたいのは「Windowsアプリケーション」で「VB.NET」での作成だ。
どっちも違う。しかしCOMが提供されているのでコレはいけるんでない?
と思い手を出してみた。
まずは前回と同じく開発ツールを落とす。
今回は「Microsoft Visual Basic 2010 Express Edition」であります。
前回同時に落としてしまったのですでに入っていたわけですが
まあ、それは良いでしょう。
そしてDXライブラリはC#の開発キットをダウンロードしましょう。
この中にあるReadme.txtは熟読しておいてください。
そんなに長くないので。
さて、プロジェクトを作って適当に名前を付けて
そして保存。一旦プロジェクトを閉じて・・・ファイルをコピーだ。
bin/Debugとbin/Releaseに「DxLib.dll」「DxLibDotNet.dll」をコピーします。
コレが実行時に必要になるDLLなんだろう。
ここでプロジェクトを起動
「DxLibDotNet.dll」を参照設定しよう。
プロジェクト(ここではDXLibConfigとする)を右クリックしプロパティを開く。
そこの参照のタグを押して画面中央の追加を押下
参照の追加のウィンドウの参照からbin/Debugかbin/Releaseに置いた
「DxLibDotNet.dll」を選択する。参照設定に追加されたことを確認する。
これでOKだ。
これでDXライブラリライフがエンジョイできるんだ。簡単だろ?
あとはコーディングの好みにもよるが
Imports DxLibDLL
Imports DxLibDLL.DX
あたりを追加しておくと便利であろう。
あとはフォームをぐりぐり作っていくのだがひとつ問題がある。
起動するとフォームの前に黒いコンソールっぽいものが表示されるのだ。
これが従来のゲーム画面となりうるわけだが、今回は必要ない。
じゃあ消す方法は?
'ウィンドウモードで起動
ChangeWindowMode(DX.TRUE)
としてあげれば問題ない。
これでフォームは起動する。
今回テスト用に作成したコーディングを軽く載せてみよう。
'起動時の処理
Private Sub DxLibConfig_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'ウィンドウモードで起動
ChangeWindowMode(DX.TRUE)
'ログを出力する
SetOutApplicationLogValidFlag(DX.TRUE)
'描画画面は表示しない
SetNotWinFlag(DX.TRUE)
'ライブラリ開始処理
If DxLib_Init() = -1 Then
'起動できなかった場合はアプリケーションを終了する
MsgBox("初期化に失敗しました。", MsgBoxStyle.Critical)
End
End If
End Sub
'終了時の処理
Private Sub DxLibConfig_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
'ライブラリ終了処理
DxLib_End()
End Sub
となる。
あとはコントロール内で処理を書いてあげればいいだけなので簡単。
今回のキーコンフィグで言えば入力情報を取得するだけであれば
' エスケープボタンで終了
While ProcessMessage() = 0 And CheckHitKey(KEY_INPUT_ESCAPE) = 0
'変数宣言
Dim i As Integer = 0
'パッド接続分だけ処理
For i = 1 To GetJoypadNum()
Dim Pad As Integer = GetJoypadInputState(i)
If (Pad <> 0) Then
'情報格納
PadNo = i
PadKeyNo = Pad
msgbox("入力された!")
exit While
End If
Next
End While
みたいに書けば動作する。
↑のソースは上手く動くかはテストしてないので雰囲気だよ雰囲気。
このロジックはボタン押下時に呼んでいるが問題なく動いている。
これでパッドの情報なんかを取得してキーコンフィグとか作れちゃう!
DXライブラリ同士だからデータの共有も容易だしね!
結果はiniファイルを
GetPrivateProfileString
GetPrivateProfileInt
WritePrivateProfileString
WritePrivateProfileInt
あたりで格納して、ゲーム側で読込処理をしてあげればいいんではないか?
セーブデータは別に作るようにしたら、見られてもいいデータになるだろうし
メッセージ処理とかをしなくていい。ってだけでもVBを使う意味はあるんじゃないかな。
ってことで、コレ採用!
ああ。ループ中に応答なしってなる場合はループ中に
'応答なし防止
Application.DoEvents()
を入れてあげると良いよ。
スポンサーサイト