FC2ブログ

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
という別のメソッドでも使えるようになっている
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック