Weed.nagoya:便利ツールでネット活用

「Feel Physics」という物理教育アプリの開発・出前授業をしている会社で、アプリを開発しています

100314-Ruby/Miyakoで簡単なゲーム画面を作ってみた

MiyakoというRubyのゲーム作成用フレームワークを、最近友人と勉強している。書籍がマイコミから出ており、それを見ながら二人であれこれとコードを打ち込んでいる。Miyakoはかなり敷居を低くしてくれているので、なかなか面白い。

下の映像は、簡単なゲーム画面です。上下左右にキャラクターがアニメーションしながら動く・・・だけです。

まあはっきり言って地味なのだが、まだ始めたばかりということでご容赦を。そして、上のプログラムのソースが、以下のものである。

require 'miyako'
include Miyako

Input.mouse_cursor_hide # マウスカーソルを表示しない
@scr_col = CollisionEx.new(Screen.rect, Point.new(0,0))
# 左上、上、右上、左、静止、右、左下、下、右下に動くとき、どのキャラクターを使うか
@anm2idx = [0, 0, 0, 1, -1, 3, 2, 2, 2]
# 画像ファイルを読み込み、一辺64ピクセルの正方形に分解する
@spr = Sprite.new(:file=>"img/dq2player1.png")
@spr.oh = @spr.ow = 64

@anm = SpriteAnimation.new(:sprite=>@spr, :wait=>0.1, :pattern_list=>[0, 1, 2, 1])

@anm.centering!
@anm_col = CollisionEx.new([0,0,*@anm.size], @anm.pos)
@anm.start

# Sprite[:spr] = @spr

Miyako.main_loop do
  break if Input.quit_or_escape?
  
  amount = Input.trigger_amount
  dir = @anm2idx[(amount[1]+1)*3+(amount[0]+1)]
  @anm.character = dir if dir >= 0
  
  new_pos = @anm_col.pos.move(*amount)
  
  if Collision.covers?(@scr_col, @scr_col.pos, @anm_col, new_pos)
    @anm.move!(*amount)
    @anm_col.pos.move!(*amount)
  end
  
  @anm.update_animation
  
  @anm.render
end

Miyako自体も面白いが、気心知れた友人といっしょにワイワイ作るのが楽しい。日曜プログラマーとしてはかなり充実できた。みなさんも気が向いたら声かけて下さいな。