FC2ブログ

ruby でクラスからインスタンス作成

ruby でクラスからインスタンス作成

クラスからインスタンスを作成し
メソッドで呼ぶようにする

インスタンスを作るには
クラス名.new(引数)

.new をつけることで
def initialize が呼ばれる

今回、クラスで
def initialize(name)
@name = name
@hp = 100 + rand(100)
end

となっているので

まず、モンスターのスライムを作成

スライムのインスタンスを作るには

slime = Moster.new("slime")
これで、
スライムのインスタンスが作成され初期設定がされる

このスライムにダメージを与えるには
def damage を実行すればいいので

slime.damage
とすれば実行できる

実行すると
slime appeared. His HP is 109
slime's HP is now 92
というように表示される

さらに、スライムだけでなくマミーも追加
そして、
マミーの回復も追加してみた
mummy = Monster.new("munmmy")
mummy.heal

これで実行すると

slime appeared. His HP is 187
slime's HP is now 170
munmmy appeared. His HP is 150
munmmy's HP is now 165
というように追加されたのがわかる
スポンサーサイト



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

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
という別のメソッドでも使えるようになっている

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

ruby のメソッドの引数、返り値について

ruby のメソッドの引数、返り値について


def で設定したユーザ関数の引数は
2つにすることもできる

def sing(word="uryyy!")
puts word + word + word +"-"
end

sing()
sing("hu")

へ繰り返し処理を追加するには

def sing(word="uryy!", num=1)
for i in 1..num do
print word
end
puts "-"
end

というように

num を引数に追加して
for で繰り返す数値に利用している

1,,num とすれば
1~numで指定した回数という条件にできる

これを関数で使うには
sing()
とか
sing("good!!",2)
というように繰り返し回数を引数で指定する

実行すると

uryyy!-
huhuhuhuhuhuhuhuhuhu-
というように繰り返し表示される

次に、メソッドの返り値について

ここまでは関数の結果を画面表示したけど
結果を変数に格納することができる

この格納することで、後で代入して表示したり
計算に使ったりと様々な応用ができる

今回はソースを変えて
返り値を表示するようにした

def sing(word="uryyy!",num=1)
s =""
for i in 1..num do
s += word
end
s += "-"
return s
end

res = sing("hu",10)
puts res

この結果は
huhuhuhuhuhuhuhuhuhu-
となる

まず、 s="" で変数を空文字で初期化
for ループの中で
s += word
により、指定したループ回数だけ文字が += により
追加されていく

今回なら
最初は
hu
だけど
hu
huhuhu
というように
+= で追加されていく

最後に for ループを抜けたら
s += "-"
で文字列の一番後ろに - がついて
huhuhuhuhuhuhuhuhuhu-
となっている

return s は結果を格納した変数
これが関係しているのが
res = sing("hu",10)

通常、この結果は画面にでてくるけど
res = になっているので結果は
res に格納され、
puts s で画面表示されている

返り値と引数については
他の言語でも多々使うため
一回覚えると学習効率がよくなる

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

ruby のメソッドの定義

ruby のメソッドの定義

#28 メソッドを定義しよう
http://dotinstall.com/lessons/basic_ruby/4728
を元に
ruby でのユーザ関数作成について学習

ユーザ関数のメリットは
自分で便利な関数を作成したり
よくつかう処理をまとめて関数にして実行する
ということができるということ

ユーザ関数の作り方は
def ユーザ関数名
 行う処理
end

となる

自作でつくった関数を使うには
他の言語のように
関数名()
とすればOK

注意点としては
関数名は、数字からではつくれない
ということ
これは、他のPHPなどでもよくあるルールなので
名前の付け方を覚えておくと応用がきく

とりあえず実践
ef sing
puts "Hi"
end

sing()

これを実行すると Hi と表示される

また、ruby のユーザ関数も、ほかの言語同様
引数を設定できる

これは関数に、引数の値を渡して
関数内で処理するのにつかう

この引数を設定したユーザ関数を使うには
関数名(引数)
というように使う

引数には、初期値を設定することもできる
こうすれば
何も指定していないときのデフォルト値が設定できるので
引数なしの場合には
デフォルトの値で実行されるということになる

とりあえず実践
def sing(word="uryyy!")
puts word + word + word +"-"
end

sing()
sing("hu")

で実行すると

uryyy!uryyy!uryyy!-
huhuhu-
となる

最初の
uryyy!uryyy!uryyy!-

sing()で引数なしで実行した結果ため
これは
word="uryyy!
というように初期値を設定してある

huhuhu-

sing("hu")
で引数を "hu" で指定した結果になる

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

ruby の while 文

ruby の while 文

#27 while文による繰り返し処理
http://dotinstall.com/lessons/basic_ruby/4727

を参考に
ruby での while 文を学習
自己代入も学習

ruby の while 文の構文は

while 繰り返しの条件 do
行う処理
end

となる

while i <10 do
puts i
i = i+1
end


とすると
1~9まで表示される
これは i<10 なのが理由で
i<=10 なら1~10までになる

自己代入演算子とは
i = i+1
というのを
i +=1
というように書くやり方のこと

似たようなもので
+=
-=
*=
/=
というのもある

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

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