サイログ。

~雑多な記事置き場~

Miyako2.1での超簡単なサンプル

迷路移動サンプルを30分くらいで作ってみました。かなりアドホックです(は、恥ずかしい・・・)

require 'Miyako/miyako'

include Miyako

# 大きさは全共通
@size = Size.new(32,32)

# 0=壁 1=通路
@sprites = [Sprite.new(:size=>@size, :fill=>[  0,  0,128]),
            Sprite.new(:size=>@size, :fill=>[255,255,255])
           ]

# 0=壁 1=通路
@maze = [[1,1,1,1,1,1,1,1],
         [1,0,1,0,0,0,0,1],
         [1,0,1,1,1,1,0,1],
         [1,0,0,0,0,0,0,1],
         [1,0,1,0,1,0,0,1],
         [1,0,1,1,1,1,1,1],
         [1,0,0,0,0,0,0,1],
         [1,1,1,1,1,1,1,1]]

@player = Sprite.new(:size=>@size, :fill=>[255,0,0])
@pos = Point.new(0,0)

# キャラクターを移動する
def move_player(x,y)
  @pos.move!(x, y)
  @player.move!(x * @size.w, y * @size.h)
end

# 初期位置移動
move_player(1,1)

Miyako.main_loop do
  break if Input.quit_or_escape?

  amt = Input.pushed_amount

  # 移動先が壁でなければ移動
  np = @pos.move(*amt)
  if @maze[np[1]][np[0]] == 0
    move_player(*amt)
  end

  # Miyako2.1の新機能、render_xyが炸裂
  @maze.each_with_index do |ar, y|
    ar.each_with_index do |v, x|
      @sprites[v].render_xy x*@size.w, y*@size.h
    end
  end
  @player.render
end

実行結果はこんな感じです。

これからコツコツと作っていくと、習熟のたすけになると思いますので、しばらくやってみたいと思います。