[[目次へもどる>PuyoPuyo]]
* Scene [#c5d36715]
#contents

とりあえず連鎖の管理はもうできるようになった.
今回はアニメーションにも少し突っ込んで行きたいと思っているので,
この先に進むにはグラフィックを導入しないことにはなじまらん.

そこでまずはゲームの場面を管理するシーンを作る.

ゲームってのはいくつかの場面で構成されている.
例えばタイトル画面,ゲームオーバー画面,キャラ選択画面,ステージ画面などなど.
それらひとつひとつをシーンとして扱う.

** SceneBase [#p852e4d1]
最初にベースとなるシーンSceneBaseを定義した.
#sh(ruby){{
class SceneBase
  def initialize
  end

  def start
  end

  def main
    GameMain.game.screen.clear
    Debug.update
    update
  end

  def update
    
  end

  def terminate
  end
end 
}}
何もないですね.
なぜならこのクラスはいわばインターフェースのような役割を果たしていて,実際には子クラスによって具体的なシーンが構成される.
重要な部分は「main」メソッドと「update」メソッド.「main」は毎フレーム呼び出され,画面の更新を行う.GameMainは後ででてくる.
「update」は子クラスで定義され,シーン自体の更新を行う.

** ScenePuyoPuyo [#beb8eaac]
次に,今開発を進めたい実際のプレイシーンScenePuyoPuyoを定義する.
#sh(ruby){{
class ScenePuyoPuyo < SceneBase
  def start
    @players = []
    @players.push(FieldController.new(16,16))
    # test
    @players.first.instance_eval{ @field.set_table(<<EOF)
......
......
......
......
......
......
..yb.r
.....b
...rgb
...yrg
..yrgb
.ryrgb
EOF
    }
  end

  def main
    super
  end

  def update
    super
    @players.each do |controller|
      controller.update
    end
  end
end
}}
前処理としてもろもろの初期化を行っている.@playersは多人数対戦を想定してプレイヤーの配列にしておいた.


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS