[[目次へもどる>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);