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 というように書くやり方のこと 似たようなもので += -= *= /= というのもある

ruby でハッシュオブジェクトと繰り返し処理

ruby でハッシュオブジェクトと繰り返し処理
#26 ハッシュオブジェクトと繰り返し処理
http://dotinstall.com/lessons/basic_ruby/4726
を参考に、each メソッドをつかって
ハッシュオブジェクトを使った繰り返し処を理学習
eachメソッドを使うことで
ハッシュに対して繰り返し処理を行うことができる
scores ={“tom”=>200,”sam”=>300,”jobs”=>500}
というように、値とキーのペアがハッシュ
eachメソッドを使うことで、この
キーと値の両方を繰り返し処理で取得する
ハッシュ.each do |キーを格納する変数, 値を格納する変数|
行う処理
end
という書き方になる
| は shift + \ で入力|
今回なら
ハッシュが scores なので
scores.each do |name, score|
printf(“%s ‘s score is %d\n”, name, score)
end
これで
jobs ‘s score is 500
sam ‘s score is 300
tom ‘s score is 200
となる
printf() の
%s は文字列
%d は整数
になる

ruby の for / each による繰り返し

ruby の for / each による繰り返し
今回は for ループと each メソッドで繰り返し処理
これは、オブジェクトの中身の要素分だけ繰り返す
PHPの foreach() とおなじような処理になる
まず、for ループ
for 変数 in 配列 do
行う処理
end
となる
users =[“tom”,”sam”,”jobs”]
と3人の名前を用意
これを配列分表示するなら
for user in users do
puts user
end
とする
これで、配列 users の中身が user という変数に格納され
それを puts user で表示している
このループは配列の中身の分だけループするので
tom
sam
jobs
となる
同じようなメソッドとして
each メソッドがある
これもループするメソッドで
構文は
配列.each do |変数|
行う処理
end
となる
users =[“tom”,”sam”,”jobs”]
users.each do |user|
puts user
end
とすると、 for のときと同じ結果が得られる
for は単純ループでも使われる
構文はいまいち理解できていないけど
for i in 1..10 do
puts i
end
とすることで
1~10まで表示される

ruby で times メソッドによる繰り返し処理

ruby で times メソッドによる繰り返し処理
ruby の繰り返し処理でいちばん基本になるのが
times メソッド
構文は
繰り返す回数.times do
行う処理
end
となる
10.times do
puts “Hi !”
end
とすると
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
Hi!
と10回繰り替えされる
ループ回数を出すには
10.times do |i|
puts “#{i} Hi!”
end
とする
| は shift +\ で入力
i の値は0からになる
1からじゃないので注意
これでループ回数が表示される

ruby の case 文について

ruby の case 文について
ruby の case 文は
case 条件
when ケース1:
 ケース1のときの処理
when ケース2:
 ケース2のときの処理
else
 それ以外のときの処理
end
という構文になる
PHPの switch 文に近い処理になる
switch の場合だと
switch(条件){
case ケース1:
 ケース1の処理;
 break;
case ケース2:
 ケース2の処理
 break;
default:
 それ以外のときの処理
 break;
}
というかんじになる
つまり
switch が case
case が when
default が else end
と置き換えるとわかりやすい
when には、複数条件の指定が可能
今回、ドットインストールのをみ てやってみた
gnal =”yellow”
case signal
when “red”:
puts “stop”
when “green”,”blue”
puts “go”
when “yellow”:
puts “caution”
else
puts “signal is broken”
end
とすることで
when “green”:
に該当するため
実行すると
caution が表示される

ruby の比較演算子について

ruby の比較演算子について
#22 比較演算子について
http://dotinstall.com/lessons/basic_ruby/4722
を参考に学習
ruby で使える比較演算子は
> < >= <= == != というように、他の言語でもおなじみのものが使える 変わっているのとしては =~ という正規表現とのマッチングを調べるのがある 正規表現は Linux のシェルとかPHPなどで多く使われる puts "match" if /taguchi/ =~ "my name is taguchi" という場合 // の間の文字の taguchi が 比較する文の中にあるので puts で match と表示される また、条件をつなげるには PHPなどでお馴染みの  && || というものも使える 正規表現を試すツールも存在しており http://rubular.com/
というものもある