疑似3Dの可能性とか

例えば、スペースハリアーとかアフターバーナーみたいなゲームなら、作れそうな気がする。

スペースハリアーAC版は地面の描画が問題だが、アフターバーナーは回転の計算量が問題だ。

とりあえずアフターバーナーというリクエストをもらったので実験的に作ってみた。
疑似3Dはオブジェクトの描画だけなら透視座標変換の計算をするだけだから簡単だ。
マリオカートの地面みたいなことをしようと思うと、StarRubyのようにライブラリでサポートしないとたぶん無理。

require 'dxruby'

image = Image.new(32,32)
image.box(13, 16, 18, 26, [255, 200, 50, 50]) # 木
image.line(13, 16, 13, 26, [255, 0, 0, 0])
image.line(18, 16, 18, 26, [255, 0, 0, 0])
image.circleFill(16, 8, 8, [255, 0, 255, 0])
image.circle(16, 8, 8, [255, 0, 0, 0])

bg = Image.new(640,480, [255, 0, 0, 255])

Window.bgcolor = [200,250,255]

x = 320
y = 1000
z = []
Obj = Struct.new(:x, :z)
font = Font.new(32)

Window.loop do

  z.push(Obj.new((rand(640)-320)*10, 20))
  z.push(Obj.new((rand(640)-320)*10, 20))

  Window.draw(0,290, bg, 0)
  z.delete_if do |i|

    Window.drawScale((i.x - 320) / i.z + 320, (y - 240) / i.z + 240, image, 10.0 / i.z, 10.0 / i.z, nil, nil, 20 - i.z)
    i.z -= 1
    if i.z < 1 then
      true
    else
      false
    end
  end

  break if Input.keyPush?(K_ESCAPE)
  Window.drawFont(0, 448, Window.getLoad.to_i.to_s + " %", font)
end