eraシリーズ改造/バリアント開発の覚え書き

12月5日の雑記


ていうか代入文のほうがメソッド呼び出しより先?
そうするとselfつけないとダメだから、selfって何?みたいなことになって困るじゃん。
selfつけるくらいならglobalってつけるようにしたほうがいいかな。Aはglobal.a、ってこれじゃ一文字変数の意味ねーじゃん。という状態に。あわわ。

あれか。set_resultとかやって、代入するようにするか。いやいやいや。=で代入できるからいいんじゃないか。しかしうーんこれはどうしたものか。本当に困った。

それにしても使い捨ての無名クラスを多用してるから長い時間動かしてるとメモリすごいことになるんじゃないかという心配が出てきた。適度にGC.startしないとだめかなあ。明示的にdisposeできればいいんだけどそういう言語じゃないし。


* * *


GC.startしたら結構メモリ消費減るなあ。そもそもたいした容量食ってないっぽいしあんまり気にしなくてもいいかもしれない。


* * *


広域変数については、moneyとかtimeとかで+=/-=できないのは非常に不便なので、setter/getter形式にしないで、Rubyのaccessor形式のままアクセスできるようにしたい。
ということで、まず、変数情報オブジェクトを用意して管理する。どっかのスタティック変数に変数情報オブジェクトを保持して、varで経由で変数を参照/代入する。var.moneyとかvar.resultとかそういうふうに呼び出す。ことにした。globalだとゲームデータ的なグローバルと紛らわしいから、varで。varならそこそこ分かりやすいかもしれないし、それなりに短いし、ローカル変数と間違うこともないし、これがいいんじゃないかな。いいよね。いいことにする。

で、TALENTとかABLとかいつでも配列として扱う変数はいちいちvarつけるのは面倒だし、つける必要もないと思うから、これは別の方法で考えよう。
とりあえずは非配列変数としても扱われる変数類をvarに紐付けることを済ませる。


* * *


あと、countいらないよね。erabasicのREPEAT n ... REND構文は、Rubyだとこう書ける。

10.times do |i|
  print array[i]
end

Integerのtimesメソッドを使うわけだ。repeat関数を用意して、ERBと同じような書き方にすることもできるだろう。

repeat 10 do |i|
  print array[i]
end

もっとも、そもそもこういう文なら、

array[0..10].each do |val|
  print val

でよかったりするんだけど、これはRubyに慣れてないと分かりにくいだろうから、repeatでもtimesでも書けるようにはする。
もちろんこれは、

for i in 0..10
  print array[i]
end

なんていうふうにも書けるから、そういう書き方もありだろう。これはEmueraの

FOR LOCAL, 0, 10
  PRINTFORM %STR:LOCAL%
NEXT

と似たような書き方だから、そんなに抵抗もないと思いたい。var経由でないとアクセスできないからcountがあっても使いにくいしそんなに困らないんじゃないかな。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

リンク

漠々ト、獏
eramaker/eramaker2の開発元の公式サイト。

Emuera - emurator of eramaker
C#で書かれたeramakerのエミュレータ「Emuera」のプロジェクトページ。

eraシリーズを語るスレ まとめ
eraシリーズ全般のまとめ。バリアント情報、改造情報など。

eratoho まとめ
eramakerのバリアント「eratoho」のまとめ。

era板
eraシリーズについての掲示板。

サブページ

Rubiera
Bitbucket上のRubieraプロジェクトページ。Rubieraのソースコードのダウンロードはここで。

管理人/副管理人のみ編集できます