#!ruby -Ks # -*- mode: ruby; encoding: sjis -*- # Last updated: <2013/12/27 23:26:51 +0900> # # ビットパターンを作成、あるいは描画 # # ビットパターンデータをダンプ # ruby makebitpat.rb hoge.png # # ビットパターンを描画 # ruby makebitpat.rb # require 'dxruby' if ARGV[0] # ビットパターンをダンプ fn = ARGV[0] img = Image.load(fn) w, h = img.width, img.height dt = [] h.times do |y| d = 0 w.times {|x| d |= (1 << x) if img[x, y][0] > 128} dt.push(d) end p dt exit end # 与えられたデータから画像を作成する def make_image_from_bitpat(dt) w = h = dt.length img = Image.new(w, h) h.times do |y| w.times {|x| img[x, y] = C_WHITE if ((dt[y] >> x) & 0x01) != 0} end return img end # ビットパターンデータ data = [ [2016, 2064, 2640, 6744, 6168, 2064, 2064, 2016, 2064, 6168, 10260, 18450, 20466, 1632, 576, 7224], [0, 2016, 2064, 2640, 23130, 22554, 18450, 18450, 10212, 6168, 2064, 2064, 4080, 1632, 576, 7224] ] # 画像を作成 imgs = [] data.each {|d| imgs.push(make_image_from_bitpat(d))} Window.minFilter = Window.magFilter = TEXF_POINT Window.resize(320, 240) cnt = 0 Window.loop do break if Input.keyPush?(K_ESCAPE) Window.drawScale(32, 32, imgs[(cnt >> 4) & 0x01], 4, 4) cnt += 1 end