タグ

DXRubyに関するxefのブックマーク (4)

  • 簡易マップエディタ - mirichiの日記

    ずーーーっと前、タイムスタンプを見ると4年と4ヶ月ほど前に作られたとみられる簡易マップエディタに手を入れて、マップデータの読み込み/保存機能追加と2レイヤ対応をした。 まあこれで作ったマップ上を歩くサンプルでスクロールのパターンを作ってみよう、と。思ったわけだが、いざ作ってみるとそんなにパターンがあるわけでもなく。いま2つできたとこで、もう1つぐらいかなー # 簡易マップエディタ require 'dxruby' require './map' # マップデータ map = Array.new(32) { [1] * 32 } # 絵のデータを作る mapimage = [] mapimage.push(Image.new(32, 32, [100, 100, 200])) # 海 mapimage.push(Image.new(32, 32, [50, 200, 50])) # 平地 m

    簡易マップエディタ - mirichiの日記
  • マップのスクロール - mirichiの日記

    そういえばDXRuby掲示板でスクロールのサンプルを作るという話を2度ほどしたうえに放置してたなーと思ってちょっと手をつける。 ついでにマップデータを外部データファイル化して読むようにしておいた。サンプルというにはアレなぐらい簡単なものではあるが、あとで簡単なマップエディタで読み書きできるようにでもしておけばなんとなくそれっぽい雰囲気にはなるだろう。マップエディタをDXRubyWS使って作るとかすると少しインパクトはあるかもしれん。 シンプルなMapクラスとして実装して、描画先はnewの引数で指定する。Map#drawの引数はマップ内の座標で、(newで指定されたもので省略時はWindow).draw_tileを発行するが、その引数としての描画サイズは描画先と画像サイズから自動計算するようにしてみた。実際のところ、画像をいくつ並べるかというのはコードを書く側からするとあまり意味の無い情報

    マップのスクロール - mirichiの日記
  • Sceneにメインループを置く例 - mirichiの日記

    昨日のコードには2つほど問題がある。一つはシーン切り替えのトリガが1フレーム処理の最後にあるところで、まあこれは単純なミスだ。 もう一つは、シーン切り替えの瞬間のみInput.updateが1フレーム中に2回呼ばれるところ。2回呼ぶのはDXRuby的には反則なのだが、これを1回にするように修正すると今度はシーン切り替え後のInput.key_push?(K_SPACE)がしょっぱなからtrueになって、SecondSceneがいきなり終わることになる。最初の入力を無視するのも面倒だし、どうしていくのがいいのかはおいおい考えるとして、今はこの状態で先に進めることとする。と思ったけどこれちょっと前に発覚したバグじゃん。まあ、結局のところ後で考えるわけだが。 今回はメニューぽいSceneを追加してみよう。 Escapeキーでメニュー表示するが、このときにメインのシーンはそのまま実行し続ける、とい

    Sceneにメインループを置く例 - mirichiの日記
  • Sceneクラスがよくわらんという話 - mirichiの日記

    いや、理屈はわかる。使い方もわかる。んでも、なんだかいまいちピンとこないと言うか、なじまないと言うか。 DXRubyではWindow.loopを基に作ることになっているが、これはちょっとしたものを極限まで簡単に作れるようにという意図でそうしている。逆に言えば、ちょっと規模の大きなものを作ろうとしたときにはこの仕掛けが逆に負担になってくる。つまり、すべてをWindow.loopの中に書かねばならないということだ。 こういう状況を打開する方法の一つとして、Sceneクラスを使うというのがある。Wikiにもサンプルを置いてはあるのだが、どうもいまひとつこれの使い方がしっくり来ないのだな。 例を挙げるとすれば、フェードイン/アウトをどう実装するか、とか。Sceneの一つとして分離してしまうか、そうじゃなければカウントとフラグでSceneのメイン処理の中に入れ込んでしまうことになる。どっちも正直な

    Sceneクラスがよくわらんという話 - mirichiの日記
  • 1