[[目次へもどる>PuyoPuyo]]
* ブロックを描画しよう [#ed018301]
#contents

ゲームウインドウができたので早速画面にフィールドを描画してみたいと思うのが人情.

** Block [#hdec2330]
まずはブロックを画面に描画する機能を追加した.
#sh(ruby){{
class Block
  def get_color
    case @color
    when :r
      StarRuby::Color.new(255,128,128)
    when :g
      StarRuby::Color.new(128,255,128)
    when :b
      StarRuby::Color.new(128,128,255)
    when :y
      StarRuby::Color.new(255,255,128)
    when :p
      StarRuby::Color.new(255,128,255)
    end
  end

  def draw(ox,oy,size)
    x = ox + @row * size
    y = oy - @line * size
    screen = GameMain.screen
    screen.render_rect(x, y, size, size, get_color)
  end
end
}}
フィールド自体の描画位置とブロックサイズを受け取って,自分のテーブルの位置に基づいて矩形を描画する.
色は適当にとってくる.

** Field [#f42c2458]
あとはフィールドを描画する処理を加えれば終わりだ.
#sh(ruby){{
class Field
  def initialize(..., block_s)
    @block_s = block_s
  end
  def draw_field(x,y)
    y = @line_s * @block_s + y
    @blocklist.each do |block|
      block.draw(x,y,@block_s)
    end
  end
end
}}
フィールドを作るときにブロックのサイズを受けとるようにした.
描画するブロックはブロックリストで既に保持しているのでループでぶん回してdrawメソッドを呼びまくればオーケー.

** 実行 [#g129aeb9]
さあブロックが描画できるようになったので,適当に連鎖をセットしてみよう.
フォールダウンとコネクションチェックの間に適当にウェイトを挟んだ.
#media(PuyoPuyoChap5/PuyoPuyoChap5.flv);


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