Tutorial B - spoolkitamura/nyle-doc-jp GitHub Wiki
チュートリアル
画像ファイルの扱い
Nyleを使った画像ファイルの扱いについて、具体的な例を挙げながら説明します。
(1)画像ファイルの読み込みと表示
まずは、何も描かれていない真っ白な画面を作ってみます。
require 'nyle'
class Screen < Nyle::Screen
def initialize
super
end
end
Screen.new.show_all
Nyle.main
つぎに、initialize
メソッドに画像ファイルを読み込む処理を書ます。
そしてdraw
メソッドを追加して、ファイル読み込んだ画像を表示する処理を書きます。
require 'nyle'
class Screen < Nyle::Screen
def initialize
super
@image = Nyle.load_image("./img.jpg") # 追加
end
def draw
Nyle.draw_image(0, 0, @image) # 追加
end
end
Screen.new.show_all
Nyle.main
(2)画像ファイルの部分読み込み
(1)で読み込んだものと同じファイルを使って、
画像の一部分だけを読み込んで表示することもできます。
require 'nyle'
class Screen < Nyle::Screen
def initialize
super
@image = Nyle.load_image("./img.jpg", {cx: 200, cy: 100, cw: 320, ch: 240}) # 変更(オプション)
end
def draw
Nyle.draw_image(20, 20, @image) # 変更(表示位置)
end
end
Screen.new.show_all
Nyle.main
Nyle.load_image
メソッドのオプションで、切り出す部分の基点座標とサイズを指定します。
この例では、座標(200, 100)から 320×240のサイズの分だけ切り出しています。
(3)画像の拡大/縮小
同じく(1)で読み込んだものと同じファイルを使って、画像の拡大/縮小をさせてみます。
require 'nyle'
class Screen < Nyle::Screen
def initialize
super
@image = Nyle.load_image("./img.jpg", {sx: 0.5, sy: 0.5}) # 変更(オプション)
end
def draw
Nyle.draw_image(20, 20, @image)
end
end
Screen.new.show_all
Nyle.main
Nyle.load_image
メソッドのオプションで、縦横の倍率を指定します。
この例では、縦横とも 50%に縮小しています。
(4)画像の分割読み込み
同じく(1)で読み込んだものと同じファイルを使って、
画像を小さなピースに分割して配列に入れてみます。
require 'nyle'
class Screen < Nyle::Screen
def initialize
super
@image = Nyle.load_image_tiles("./img.jpg", 4, 3, {sx: 0.5, sy: 0.5}) # 変更
end
def draw
3.times do |y| # 変更
4.times do |x| # 変更
Nyle.draw_image(20 + x * 100, 20 + y * 100, @image[x][y]) # 変更
end # 変更
end # 変更
end
end
Screen.new.show_all
Nyle.main
Nyle.load_image_tiles
メソッドで、縦横の分割数を指定します。
この例では、縦4×横3の合計12個のピースに分割しています。
(さらにオプション指定で 縦横とも 50%にサイズを縮小しています)
Nyle.load_image_tiles
メソッドは、ゲームのキャラクタやマップ情報など
1つのファイルに複数の画像が含まれている場合などにも効果的です。
Nyleでの画像ファイルの扱いについて記載しました。
提供されるメソッドなどの詳細はAPI一覧および
リンク先の各メソッドの説明を参照してください。
また、ヒント集(Tips)やサンプルプログラム紹介なども参考にしてください。