2009.06.05 Friday | 16:35

  VB.NET による EasyGame ( まずは基本クラスと初期処理のみ ) ふるいむかし

VB.NET も C# もライブラリ的な扱いは同じなので、
ライブラリ配布サイトよりダウンロードして、exe が作成されるディレクトリに入れ、
参照からDxLibDotNet を読み込んで使います

Form はありますが、使わずに ApplicationEvents.vb を使用します


Imports DxLibDLL

Namespace My

	Partial Friend Class MyApplication

		' ********************************************************
		' スタートアップ
		' ********************************************************
		Private Sub MyApplication_Startup(ByVal sender As Object, _
		ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) _
		Handles Me.Startup

			DX.ChangeWindowMode(DX.TRUE)

			' 異常終了
			If DX.DxLib_Init() = -1 Then
				e.Cancel = True
				Exit Sub
			End If

			Dim gm As Game = New Game(AddressOf ul)

			gm.Start()

			e.Cancel = True

		End Sub

		Private Function ul(ByVal gm As Game) As Boolean

			Return True
		End Function

	End Class

End Namespace




Game クラスはメインループを含む描画の基本的な処理を受け持ちます。
ゲーム作成者は、クラスの内容を意識しなくて良いように、メソッドを作成し、
Game クラスにそのメソッドを呼び出させます。


Imports DxLibDLL

Public Class Game

	Delegate Function UserLoop(ByVal gm As Game) As Boolean

	Public funcUserLoop As UserLoop

	Sub New(ByVal ul As UserLoop)

		funcUserLoop = ul

	End Sub

	Public Sub Start()

		' 描画先画面を裏画面にセット
		DX.SetDrawScreen(DX.DX_SCREEN_BACK)

		Do

			' Windows Message 処理
			If DX.ProcessMessage() <> 0 Then
				Exit Do
			End If

			' ESC で強制終了
			If DX.CheckHitKey(DX.KEY_INPUT_ESCAPE) = 1 Then
				Exit Do
			End If

			' 画面を初期化する
			DX.ClearDrawScreen()

			' 外側の主処理を呼び出す
			If Not Me.funcUserLoop(Me) Then
				Exit Do
			End If

			' 裏画面の内容を表画面に反映させる
			DX.ScreenFlip()

		Loop

		DX.DxLib_End()

	End Sub

End Class