2007-01-10
[MyGame]MyGame で実装する「THE APPLE CATCHER」(2)
実装のポイントを簡単に解説。
以下はシーンクラスを使った画像表示の例。
#!ruby -Ks require 'mygame/boot' # ゲームシーン class GameScene < Scene::Base # 初期化処理(シーン生成時に呼ばれる) def init # 背景色の設定 MyGame.background_color = [128, 128, 240] # デフォルト ttf と表示サイズを変更 Font.setup_default_setting("fonts/boxfont2.ttf", 40) @font = ShadowFont.new("SCORE ----- HIGH -----") @player = TransparentImage.new("images/player.png", :x => 0, :y => 40) @apple = TransparentImage.new("images/apple.png", :x => 0, :y => 300) @bomb = TransparentImage.new("images/bomb.png" , :x => 0, :y => 380) @tasks = [@player, @apple, @bomb, @font].flatten $highscore ||= 500 @score = 0 end # 終了処理(シーン終了時に呼ばれる) def quit end # 更新処理(毎フレーム呼ばれる) def update @font.string = "SCORE %05d HIGH %05d" % [@score, $highscore] @tasks.each {|e| e.update } end # 描画処理(毎フレーム呼ばれる) def render @tasks.each {|e| e.render } end end Scene.main_loop GameScene
init の中で描画オブジェクトを生成している。 描画クラスには次のようなものがある。
- Image …… 画像描画クラス
- TransparentImage …… 透明色扱う画像描画クラス
- Font …… フォント描画クラス
- ShadowFont …… 影付きフォントの描画クラス
生成したオブジェクトの draw メソッドを呼び出すとスクリーンに描画される。
Scene::Base はシーンを簡易フレームワーク的に扱うクラスである。 シーンオブジェクトの中で以下のようにして次のシーンクラスをセットするとシーンが遷移する。
self.next_scene = FooScene
追記(2007年3月31日):最新の MyGame に合わせてサンプルと解説を修正。