「if then else end」 文を使用してじゃんけんプログラムを作ってみます。
if 条件 then
条件成立時の処理
else
条件不成立時の処理
end
「if 条件 then」の条件の部分には比較演算子を使用して左辺と右辺を比較します。
a = 100
b = 100
if a == b then
print("aとbは等しい")
else
print("aとbは等しくない")
end
「a == b」の条件が成立しているので、then-else間の「print(“aとbは等しい”)」を実行して終了しています。
条件不成立の場合はthen-elseを飛ばしてelse-end間の処理を実行します。
条件の部分の比較演算子には他に「!=」、「<」、「>」、「<=」、「>=」、などがあります。
条件不成立時の処理が必要ない場合は「else」を省略できます。
では、じゃんけんプログラムを作ってみます。
goo = 1
par = 2
choki = 3
human_hand = goo
computer_hand =goo
if computer_hand == human_hand then
print("引き分け","\n")
end
最初に変数「goo」、「par」、「choki」に数字を代入しています。この数字はじゃんけんの勝敗判定に使用します。
次に変数「human_hand」、「computer_hand」です。この変数にはプレイヤーとコンピューターの手を設定します。
「最初はぐー」ということで、「goo(数字の1)」を設定していますが、プログラム完成後には「goo」、「par」、「choki」の好きなものを
入れる事が出来ます。
「if computer_hand == human_hand then」は「if 1 == 1 then」で条件成立しているので、
このプログラムの実行結果は「引き分け」が表示されます。
最後に「goo」、「par」、「choki」の手における勝敗判定を考えます。自分の出した手を中心に考えます。
まずは自分が「goo」を出した時。分かりやすいように代入してある数字を()に入れて各変数の後ろに記述します。
「goo(1)」は「choki(3)」に勝ちます。「goo(1)」は「par(2)」に負けます。ここで最初に代入した数字の出番です。
「par(2)」ー「goo(1)」=1。「choki(3)」ー「goo(1)」=2。自分の手が「goo(1)」の時、「1」なら負け。
「2」なら勝ちになります。これを「if then else end」を使用してコードにしてみます。
if human_hand == goo then
if (computer_hand - goo) == 2 then
print("You Win","\n")
end
if (computer_hand - goo) == 1 then
print("You Lose","\n")
end
end
まず「if human_hand == goo then」で自分の手が「goo(1)」かどうかを判定しています。
次にコンピューターの手(仮に「par(2)」とします)から「goo(1)」を引きます。結果は「1」になるので、
「if (computer_hand – goo) == 2 then」この条件は成立せず、 「print(“You Win”,”\n”)」は
実行されません。
処理は次の「if (computer_hand – goo) == 1 then」に移ります 「par(2)ー「goo(1)」=1なので、
この条件は成立します。よって、「print(“You Lose”,”\n”)」が表示されます。
このプログラムでは「if」条件文の中に2つの「if文」を入れています。
残りの手、自分が「par」、「choki」を出した時のコードも記載します。
if human_hand == par then
if (computer_hand - par) == -1 then
print("You Win","\n")
end
if (computer_hand - par) == 1 then
print("You Lose","\n")
end
end
if human_hand == choki then
if (computer_hand - choki) == -1 then
print("You Win","\n")
end
if (computer_hand - choki) == -2 then
print("You Lose","\n")
end
end
かなり不完全なじゃんけんプログラムです。自分の手もコンピュータの手も最初に設定しておかなければなりません。(次回改良します)
しかし5個の変数と「if文」でプログラムらしくはなっていると思います。
じゃんけんの勝敗判定などは「Ruby じゃんけん アルゴリズム」などのキーワードでグーグルに尋ねれば良いと思います。
アルゴリズムについてRubyで書かれた本はあまりみませんので、C言語の本を載せておきます。
C言語によるはじめてのアルゴリズム入門改訂第3版
C言語による最新アルゴリズム事典
最近のコメント