schwarzの雑記 このページをアンテナに追加 RSSフィード

06/11/30 (Thu)11月30日の雑記

[] 11月30日の雑記 - schwarzの雑記 を含むブックマーク

ついでにもう少し基本的なのを作成。備忘録ということで書いておきます。

やはり一番拡張し甲斐があるのはBitmap。Spriteの拡張はマンネリだしWindowの拡張は疲れるし。

しかし重さはいかんともしがたいので、出番はなさそうです。

class Bitmap
  #--------------------------------------------------------
  # ● セピア化
  #    rect  : 実行する領域
  #---------------------------------------------------------
  def sepia!(rect = self.rect)
    (rect.x).upto(rect.x + rect.width){ |x|
      (rect.y).upto(rect.y + rect.height) { |y|
        c = get_pixel(x, y)
        v = (c.red + c.green + c.blue) / 3.0
        r = v 
        g = v * 0.8
        b = v * 0.6
        c.set(r, g, b)
        set_pixel(x, y, c)
      }
    }
    return self
  end
  def sepia(*args)
    return self.dup.sepia!(*args)
  end
  
  #--------------------------------------------------------
  # ● グレースケール化
  #    rect  : 実行する領域
  #---------------------------------------------------------
  def gray!(rect = self.rect)
    rp = (0.2989 * 1024).round
    gp = (0.5866 * 1024).round
    bp = (0.1145 * 1024).round
    (rect.x).upto(rect.x + rect.width){ |x|
      (rect.y).upto(rect.y + rect.height) { |y|
        c = get_pixel(x, y)
        v = (c.red*rp + c.green*gp + c.blue*bp).to_i >> 10
        c.set(v, v, v)
        set_pixel(x, y, c)
      }
    }
    return self
  end
  def gray(*args)
    return self.dup.gray!(*args)
  end
  
  #--------------------------------------------------------
  # ● 色の反転
  #    rect  : 実行するする領域
  #---------------------------------------------------------
  def reverse!(rect = self.rect)
    (rect.x).upto(rect.x + rect.width){ |x|
      (rect.y).upto(rect.y + rect.height) { |y|
        color = get_pixel(x, y)
        color.red = 255 - color.red
        color.green = 255 - color.green
        color.blue = 255 - color.blue
        set_pixel(x, y, color)
      }
    }
    return self
  end
  def reverse(*args)
    return self.dup.reverse!(*args)
  end
end

みうらみうら2006/12/09 14:45メモリーの解放とかって大切なんですね、お初、みうらと申します。

折り入って相談があるのですがAmbitionのRGSSで公開されているテトリスプログラムについてなのですがあの講座通りに作ってみたものの私の力不足でバグが発生してしまいます。
なんとか直そうと自力でやっているのですがサンプルプログラムもダウンロードできないようですので手探り状態です。
どうか助けてくださいmm
お返事があるようでしたら、バグの詳細など報告させていただきます。

SchwarzSchwarz2006/12/09 18:37どうもこんにちは。
試してみたところ、どうやら1ページ目のBitmapのメソッドが不足していたようです。
また、Gridクラスも少々ミスがありました。
そしてサンプルプログラム、以上3つを修正しておきました。どうも失礼致しました。

みうらみうら2006/12/12 11:46こんにちは。
そして本当にありがとうございます!
エラーが出た時に再描画できませんと言うエラーが出ていたのだけどどこがどうなっているの分からずじまいで。苦笑

サンプル、スプリクト変更されていたのを確認しました。早期に改変してもらいありがとうございます。ゲーム作りの参考にさせていただきます!