SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

シンプルなマルチメディアプログラミング向けライブラリ「SDL.NET」

オープンソースのライブラリ「SDL.NET」で始める
ゲームプログラミング ~後編~

シンプルなマルチメディアプログラミング向けライブラリ「SDL.NET」 (2)

画面に文字を描く

 Ponのタイトル画面は、すべて文字を描いて表現しています。凝ったゲームならばタイトル画像を別に用意した方が良いと思いますが、Ponぐらい単純なゲームでは、それよりも画面に直接文字を描いた方が、手間が少なくて済みます。

 実際の描画方法を見る前に、すべてのシーンの親クラスとなっているSceneクラスから見ていきます。このクラスでは、各シーンが共通で使う機能のほか、ゲーム全体で共有するフォントの定義を行っています。

リスト3
//-- タイトルなどに使う大きいサイズのフォント
SdlDotNet.Graphics.Font _font;

//-- スコア表示などに使う小さいサイズのフォント
SdlDotNet.Graphics.Font _sfont;

//== 初期化処理
//== 引数:親になるゲームクラス
public virtual void Init(Pon p)
{
    parent = p;

    //-- フォントの読み込みと大きさの指定
    _font = new SdlDotNet.Graphics.Font("font" + Path.DirectorySeparatorChar + "mplus-2c-black.ttf", 72);
    _sfont = new SdlDotNet.Graphics.Font("font" + Path.DirectorySeparatorChar + "mplus-2c-black.ttf", 24);
}

 文字を画面に描画するには、上記のようにFontクラスを用いて文字の情報を確保する必要があります。この時、SdlDotNet.Graphicsをusingしていても、Fontクラスが.NET Framework自身の提供するFontクラスとバッティングしてしまうため、フルネームでクラス名を記述する必要があります。

 また、描画する文字の大きさは途中で変えることができないので、利用する文字の大きさの数だけFontクラスのオブジェクトが必要になります。
今回は大きめと小さめの2種類を用意しました。

 フォントファイルの読み込みについては、見える部品と同様、Fontクラスのコンストラクタにパスとフォントサイズを与えるだけでOKです。フォントサイズの単位はポイントなので、利用の際には注意してください。
Fontオブジェクトが確保できたら、タイトル画面を例に画面への描画処理を見てみます。

リスト4
//== 画面の描画処理
//== 引数:画面への参照
public override void Draw(Surface s)
{
    base.Draw( s );

    //-- タイトル画面の描画
    s.Blit(font.Render("P O N", Color.White), new Point(225, 100));
    s.Blit(small_font.Render("simple teniss game.", Color.White), new Point(200, 200));
    s.Blit(small_font.Render("- Press enter key to start-", Color.White), new Point(160, 330));
}

 上記のように、画面への描画にはFontクラスのRenderメソッドを用います。Renderメソッドは描画する文字や色、背景色、アンチエイリアスの有無、テキストの長さや行数を受け取って、それに応じて適切な文字描画を行い、できあがったものをSurfaceクラスのオブジェクトとして返してくれるメソッドです。Ponでは、Renderメソッドが返してきたオブジェクトをscreenオブジェクトを通じてBlitし、タイトル画面を得ています。

次のページ
キーボードイベントの処理再び

この記事は参考になりましたか?

シンプルなマルチメディアプログラミング向けライブラリ「SDL.NET」連載記事一覧
この記事の著者

太田 晃(オオタ アキラ)

 ブログ(http://repse.blogspot.com/)では、coLinux上にMinGWを用いてクロスコンパイル環境を構築し、そのうえでSDLやOpenGLを使ってWindows向けのプログラムを書くとか、海外のソフトウェアを(勝手に)日本語化するとか、Windowsのインデックスサービ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3462 2009/02/18 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー