mieki256's diary



2015/12/24(木) [n年前の日記]

#2 [dxruby] キャラグラエディタのバケツツールが動くようになった

バケツツールが動かなかった理由が分かった。ハッシュを2次元配列に入れて、各ハッシュと比較して領域色か非領域色かを判別してたのだけど、ハッシュを浅いコピーで取り出してたから ―― 要するにポインタをコピーしてたから、おかしなことになってた。

指定された座標に対応するハッシュをコピーして、そのハッシュと、他の座標のハッシュと比較していくのだけど。その最初の指定座標を塗りつぶしてしまうと、領域色として扱うべきハッシュ内容が変わってしまうので、その後の比較が全部おかしくなるという。

最初の座標のハッシュは深いコピーで取り出さないといけない。

_Marshalで配列やハッシュをディープコピーする - Ruby Tips!

a = Marshal.load(Marshal.dump(hoge)) みたいな。

ちなみに Ruby 2.0 では、require 'marshal' を書くとエラーが出てしまった。いきなり Marshal.load(Marshal.dump(hoge)) と書いても動いてるので、基本機能(?)として取り込まれたのかなと想像していたり。

以上です。

過去ログ表示

Prev - 2015/12 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project