ruby の自作クラス

ruby の自作クラス
ruby でクラスを作成するには
class クラス名
def initialize
初期化処理
end
def メソッド名
行う処理
end
end
となる
クラス名は大文字で始まるので注意
initialize は必須で
インスタンス作成のときの初期化につかう
この解説でわかりやすいのがドットインストール
今回は、ゲームの処理を想定
class Monster
def initialize(name)
@name = name
@hp = 100 +rand(100)
end
def damage
@hp -=10 + rand(10)
printf(“%s’s HP is now %d\n”,@name,@hp)
end
end
このメモを書いてみると
def initialize(name)
@name = name
@hp = 100 +rand(100)
end
の部分が initialize メソッドによる初期化処理
@name は名前
@hp はRPGのHPを意味している
def damage
@hp -=10 + rand(10)
printf(“%s’s HP is now %d\n”,@name,@hp)
end

ダメージを受けたときの処理を行うメソッド
@hp -=10 + rand(10)
でHPが減る仕組み
printf(“%s’s HP is now %d\n”,@name,@hp)

名前と現在のHPを表示している
続いて、HPが0になったら死亡メッセージ表示
printf(“%s is dead ….\n”,@name) if @hp < 0 ruby の場合、後に if 判定を書くやりかたをするので 他の言語からくるとちょっとわかりにくい さらに、回復時のメソッド heal も追記 def heal @hp += 10 + rand(10) printf("%s's HP is now %d\n",@name,@hp) end これで、回復時の処理もつくれる また initialize メソッドへ printf("%s appeared. His HP is %d\n"@name,@hp) とすれば初期化したときに 名前とHPが表示されるようになる @がついた変数、今回なら @name @hp これらは、インスタンス変数と呼ばれ 作成したメソッドだけでなく class から生まれたインスタンスの中なら使える変数 になる つまり 通常は、メソッドの中 def initialize の中だけになるけど @ がつくことで 今回なら class Monster の中でなら使える変数になる このため、 def damage とか def heal という別のメソッドでも使えるようになっている

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です