私は、ペンと紙の RPG をスクリプトに変換することで、Ruby を操作してきました。
現在、キャラクターの統計をハッシュに保持していますが、これを public メソッドで設定できるようにしたいと考えています。私はそれを使って作業しました:
class Character
attr_reader :str, :con, :dex, :wis, :int, :level, :mods, :stats
def initialize str, con, dex, wis, int, cha, level = 1
@stats = { :str => str, :con => con, :dex => dex, :wis => wis, :int => int, :cha => cha }
@mods = {}
@level = level
@stats.each_pair do |key, value|
@mods[key] = ((value / 2 ) -5).floor
end
end
def []=(index, value)
@stats[index] = value
end
end
@stats
これにより、新しいキャラクターをインスタンス化し、実行して更新することができますnewChar.stats[:str] = 12
@mods
ただし、この方法を使用し て変更することもできるようですが、これは望ましくありません。newChar.mods[:str] = 15
ハッシュを正常に変更し@mods
ますが、これは私の理解では、現在のセッター メソッドでは不可能なはずです。
少し別のメモとして、@mods
ハッシュを作成するために使用しているイテレータは扱いにくいようですが、タスクを達成するためのより良いものは見つかりませんでした。