Rubyでじゃんけんしましょう
Rubyでじゃんけんプログラムを書いてみる。
パー:0
チョキ:1
グー:2
として、プレーヤーにコンソールに数字を入力してもらう。
1 puts("paper=0, scisors=1, stone=2 ?") 2 choice = gets() 3 player = Integer(choice) 4 computer = rand(3) 5 puts("computer: #{computer}") 6 diff = player - computer 7 if diff == 0 8 puts("even") 9 elsif diff == 1 || diff == -2 10 puts("win") 11 else 12 puts("lose") 13 end
さて、これはプレーヤーとPCの出した手の差をとっている(line6 diff = player - computer)
乱数はrand(n)を使っている。0〜n-1までの整数を返す関数です。
私が読んでいる本によると、他にも2つ方法があります。
ひとつは全ての条件を書きだす方法。
diffを3の剰余で計算する方法です。
この辺の書き方は人の好みによるのかな・・・。私は上に書いた記述のほうが好きです。でも、数字に例えられるのは読みにくい。
なので、ちょっと手を加えました。
1 PAPER = 0 2 SCISORS = 1 3 STONE = 2 4 puts("paper=0, scisors=1, stone=2 ?") 5 choice = gets() 6 player = Integer(choice) 7 computer = rand(3) 8 puts("computer: #{computer}") 9 if player == computer 10 puts("even") 11 else 12 if player == PAPER && computer == STONE || 13 player == SCISORS && computer == PAPER || 14 player == STONE && computer == SCISORS 15 puts("win") 16 else 17 puts("lose") 18 end 19 end
これは読みやすくていい。line12の条件が長くて嫌だけど、定数に直したことで解りやすくなっているからです。
プログラムを短く書くことは大事だけど、読みやすいように書く工夫も大事ですね