簡単なプログラムの作成
SDKがきちんと使えることを確認することと、SDL.NETを用いてのプログラム作成の流れを知っていただくために、実例に先立って、ウィンドウを表示するだけの簡単なプログラムを作成したいと思います。
まずは開発環境を立ち上げ、新しくプロジェクトを作成しましょう。作成するのは[Windowsフォームアプリケーション]です。適当なプロジェクト名を付け、[OK]ボタンを押してプロジェクトを作成します。
続いて、プロジェクトに参照設定を追加してやります。ソリューションエクスプローラの[参照設定]を右クリックし、[参照設定の追加]をクリックします。すると、参照関係を追加するためのダイアログが開くので、先ほどSDKをインストールしたフォルダの中にある、binフォルダの中の「SdlDotNet.dll」を選択して[OK]をクリックします。
最後に、ソリューションエクスプローラから、今回のプログラムでは必要のない[From1.cs]を[削除]しておきます。

これで、下準備は完了です。
メインプログラムを作成する
下準備ができたら、ソリューションエクスプローラから[Program.cs]を開き、中身を書き換えます。
using System;
using SdlDotNet.Core;
using SdlDotNet.Graphics;
namespace HelloSDLDotNet
{
static class Program
{
[STAThread]
static void Main()
{
Surface screen; // (1)
Video.WindowCaption = "HELLO SDL.NET WORLD"; // (2)
screen = Video.SetVideoMode(640, 480); // (3)
Events.Quit += new EventHandler(delegate(object s, QuitEventArgs e) { Events.QuitApplication(); });// (4)
Events.Run(); // (5)
}
}
}
プログラムが書けたら、[デバッグ]-[デバッグ開始]を選択して、プロジェクトをビルド・実行します。真っ黒な画面に、HELLO SDL.NET WORLDというタイトルを持つウィンドウが表示されれば成功です。
プログラムの解説
それでは、プログラムリスト1をもとに、SDL.NETを用いたプログラム作成の流れを解説します。
最初に、using節に今回利用するライブラリの名前空間を列挙しています。必須事項ではありませんが、SDL.NETではこれを行わないと名前が非常に長くなる傾向にあるため、本稿では極力using節に名前空間を指定し、短い名前で対応できるようにしています。
また、ここではCoreライブラリとGraphicsライブラリを指定していますが、このうちCoreライブラリはイベントなど、SDL.NETの根幹処理を担当する部分を提供してくれるライブラリで、SDL.NETのプログラムを作成するとき、必要な機能をまとめたライブラリです。Graphicsライブラリは画面処理やSurfaceクラスなど、基本的な画像関連の処理を提供してくれるライブラリです。
このほか、キーボード等の入力処理を提供してくれるInputライブラリ、BGMやSE機能を提供してくれるAudioライブラリ等、機能別にさまざまなライブラリが提供されています。
プログラム本体では、はじめに(1)の部分で画面の情報を記録するため、Surfaceクラスのscreenというオブジェクトを用意しています。SurfaceクラスはSDL.NETのグラフィック機能の中核を成すクラスで、画像に関連した基本的な機能がまとめられています。
(2)の部分ではVideoオブジェクトを操作してアイコンを設定したあと、ウィンドウのタイトルバーに表示する文字列を指定しています。その後で、(3)の部分でSetVideoModeメソッドを呼び出し、クライアント領域の大きさが640x480になるウィンドウを作り、先ほど用意したscreenオブジェクトに確保しています。このことから分かるように、SDL.NETでは画面もSurfaceクラスのオブジェクトとして確保できるため、画面を画像と切り分けて考える必要がなく同じ感覚で処理することが可能です。
またここで、Videoオブジェクトは画面を指す単一のオブジェクトで、画面への操作は(直接的であれ間接的であれ)Videoオブジェクトを通じて行うことになります。“単一の”と断ったのは、SDLでは通常の方法を使った場合、2つ以上のウィンドウオブジェクトを同時に扱うことができないからです。つまり、screen1には640x480のウィンドウを入れておき、screen2には320x240のウィンドウを入れておいて、ふたつのウィンドウを同時に表示させながら、連携してプログラム全体を操作するようなことはできません。従って、先の解説でscreenオブジェクトに画面を確保したというのは、正確にはscreenオブジェクトに画面への参照を格納したと言い換えることができます。
ここまでで画面の準備は終了です。実際にゲームプログラムをする時には、フルスクリーン表示を行ったり、ハードウェアバッファを利用したい場合などがあると思いますが、基本的にはここでやったことと変わりません。具体的には、ほとんどがSetVideoModeメソッドに渡す引数を変化させることで対応可能です。詳しくはドキュメントに同梱されているSetVideoModeの項をご覧ください。
続いて、イベントの準備に入ります。画面関連のときと同様に、イベントを処理するためにはEventsという単一のオブジェクトを操作していきます。(4)の部分ではウィンドウに対して閉じるという操作が行われた時に対応するメソッドを追加しています。今回は、このイベントでウィンドウを閉じる処理だけを行いたいのと解説の関係から、匿名メソッドを使って記述していますが、通常はこのイベントに対応するメソッドを別に用意した方が無難です。
こうして画面とイベントの準備が完了したら、EventsのRun()メソッドを呼び出してアプリケーションを実行します。
このように、SDL.NETでは「画面やイベントの準備」→「Runメソッドの実行」という手順で、アプリケーションを構築していきます。



