[[目次へもどる>PuyoPuyo]] * FieldController [#x8393a36] #contents さて,ブロックを配置するフィールドがとりあえず作れたので,今度はそれを制御する人が必要である.すなわちプレイヤーだ. ただし,フィールドを制御するのはプレイヤーだけでなくCPUも考えられるので, それらの親クラスとしてFieldControllerを定義した. #sh(ruby){{ class FieldController @@row_s = 6 @@line_s = 12 def initialize(x,y) @x = x; @y = y init_field init_phase end def init_field @field = Field.new(@@row_s, @@line_s) end def init_phase @phase = :falldown @wait = 0 end def update draw_field return if update_wait case @phase when :falldown update_falldown when :eliminate update_eliminate end end def update_wait @wait > 0 ? (@wait -=1; true) : false end def update_falldown fallen = @field.falldown @wait = 60 if fallen @phase = :eliminate end def update_eliminate eliminated = @field.eliminate @wait = 60 if eliminated @phase = :falldown end def draw_field @field.draw_field(@x,@y) end end }} まずフィールドを配置する場所の情報を受け取りつつインスタンスを作成. init_fieldではフィールドを作成している. ここで新しくフェイズという単語が現れた. ぷよぷよはいくつかの段階にわかれて処理が行われている. フェイズとはその処理の段階を表す. + ブロックの消去 + ブロックの落下(スキマスイッチ) + 新しいブロックを落とす 簡単にしてしまうと大体この3フェイズで良さそうだ. 現状では新しいブロックを操作して落とすことはできないので,1,2の二つのフェイズを行き来することになる. あとは簡単で,updateメソッドにて,フェイズに基づいた処理を行い,処理が終わったら次のフェーズに移ればいい.