このグラフィックスはアイディア次第でいろいろなことができる。これまでに出て来たプログラムの バリエーションだけでも楽しめるはずだ。
ここではいくつかの新しい手法を紹介した後,サンプルとしてさまざまの プログラムを挙げてみることにする。それらをいじり回して,自分のオリジナルな パターンを作ってみよう。
# ex-005.rb
nx = 600
ny = 480
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts "255"
for i in 0 .. ny - 1
for j in 0 .. nx - 1
r = i % 240 # 縦のグラデーション
g = (i + j) % 240 # ここで斜めのグラデーションが得られる
b = j % 240 # 横のグラデーション
print r.chr + g.chr + b.chr
end
end
# ex-006.rb
nx = 600
ny = 480
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts "255"
for i in 0 .. ny - 1
for j in 0 .. nx - 1
if rand(15) == 0 then # 0 .. 14 の乱数のうち 0 が出れば
r = 255 # 黄色に指定する
g = 255
b = 0
else # そうでなかったら
r = i % 240 # 3つのグラデーションの合成パターン
g = (i + j) % 240
b = j % 240
end
print r.chr + g.chr + b.chr
end
end
# ex-007.rb
nx = 240
ny = 180
cx = nx / 2
cy = ny / 2
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts "255"
for i in 0 .. ny - 1
for j in 0 .. nx - 1
x = j - cx
y = i - cy
b = (x*x/40-y*y/10) % 120
g = 255
r = ((x * y)/40 ) % 60 + 196
print r.chr + g.chr + b.chr
end
end
# ex-008.rb
nx = 240
ny = 180
cx = nx / 2
cy = ny / 2
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts "255"
for i in 0 .. ny - 1
for j in 0 .. nx - 1
x = j - cx
y = i - cy
b = (x * x / 100 + y * y / 70) % 120
r = 0
g = (x * x / 60 - y * y / 20) % 256
print r.chr + g.chr + b.chr
end
end
# ex-009.rb
nx = 600
ny = 480
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts 255
for i in 0 .. ny - 1
for j in 0 .. nx - 1
if j * 4 - i * 5 < 0 then
b = 180
r = 0
g = ((j * 4 + i * 5) / 3) % 256
else
b = 127
r = 127
g = (j * 4 - i * 5) % 256
end
print r.chr + g.chr + b.chr
end
end
# ex-010.rb
nx = 600
ny = 480
cx1 = nx / 3
cy1 = ny / 3
cx2 = nx * 2 / 3
cy2 = ny * 2 / 3
puts "P6"
puts "# Love Kyojo!"
puts "#{nx} #{ny}"
puts 255
for i in 0 .. ny - 1
y1 = i - cy1
y2 = i - cy2
for j in 0 .. nx - 1
x1 = j - cx1
x2 = j - cx2
r = (x2 * x2 / 160 + y2 * y2 / 120) % 256
g = (x1 * x1 / 40 + y1 * y1 / 20) % 256
b = ((j * 5 + i * 4) / 50) % 100 + 156
print r.chr + g.chr + b.chr
end
end