RDGC-DungeonMaker(rdgc-dm) 0.2 リリース
ランダムなダンジョンを三行以内で作れる*1gem、
「RDGC-DungeonMaker(rdgc-dm)」の最新版を公開しました(`・ω・´)
ソースコード
github : http://github.com/parrot-studio/rdgc-dm
SourceForge.jp : http://sourceforge.jp/projects/rdgc/
インストール
gem install gemcutter # 入れてない人だけ gem install rdgc-dm
使い方
動作サンプル:404 Not Found
require 'rubygems' # ruby 1.9.xでは不要 require 'rdgc-dm' board = RDGC::Maker::DivideDungeonMaker.create(30, 40) # 生成時にパラメータ指定可能 # boardが座標系の情報を保持 board.each do |x, y| t = board.tile(x, y) case when t.room? # 部屋 when t.road? # 道 when t.wall? # 壁 end
可視性制御(0.2.0 new!)
board = RDGC::Maker::DivideDungeonMaker.create(30, 40) # Boardを作っただけでは可視制御は有効にならない board.blind_mode? #=> false # 1. Board#set_blind_modeで可視制御を有効にする board.set_blind_mode # :none/:normal/:blind 省略時は:normal # 2. 必要ならばArea#set_blindでArea単位の個別指定をする board.rooms.choice.set_blind(:dark) # 3. Board#fill_blindで可視状態を初期化する # 2.と3.の手順が逆転すると正常に動かない board.fill_blind # 4. Board#open_blind(x, y, view_range)で不可視状態を可視状態にする # playerが(5, 10)に存在し、見える範囲が2 view_range = 2 board.open_blind(5, 10, view_range) # 5. Board#visible?/invisible?/dark?で可視性をチェックし、描画に使う board.visible?(5, 10) #=> true board.visible?(3, 10) #=> true board.visible?(2, 10) #=> false # 実際には移動可能範囲のみが可視状態になる(壁があればそこは処理されない) # ... # playerが(6, 10)に移動した board.open_blind(6, 10, view_range) board.visible?(6, 10) #=> true board.visible?(5, 10) #=> true # 一度歩いた場所は見えるようになっている board.visible?(3, 10) #=> true
可視性の制御については、コードを見るより、
"RO"gue #1 (rev.2)を実際にやってもらった方が理解しやすいかと
*1:オブジェクトを作るのは三行以内だけども、そこから情報を引き出して表示やらなにやらは必要