LoginSignup
10
9

More than 5 years have passed since last update.

Rubyでじゃんけんプログラムを書いてみる

Posted at

1.プログラムの仕様

2人(自分とコンピュータ)で行うじゃんけんプログラム

2.まずはアルゴリズムを考える

ざっとこんなところか

1.自分の手を出す(今回はコマンドライン引数で選択)
2.相手の手を出す(Randメソッドを使用)
3.勝敗の判定する
4.結果を表示する

ポイントは「3.勝敗の判定をする」である。
単純にプログラムを書くと以下のようになる。

Janken.rb
    def judge(my,your)
        if my == "グー"
            if your == "グー" 
                puts "あいこです"
            elsif your == "チョキ"
                puts "あなたの勝ちです"
            elsif your == "パー"
                puts "あなたの負けです"
            end
            (以下略)
        end 
    end

しかしこれではかなり冗長なプログラムとなるので、少し工夫する。

3.勝ち、負け、あいこの法則性を探る

何かじゃんけんの結果に法則性があれば、それを利用することで可読性の高いプログラムとなるはずである。

実は「グーを0」、「チョキを1」、「パーを2」と置き、自分の手から相手の手を引き算すると勝ちの場合は「-1 or 2」、負けの場合は「1 or -2」、あいこの場合は「0」となる。

0(グー) 1(チョキ) 2(パー)
0(グー) 0 -1 -2
1(チョキ) 1 0 -1
2(パー) 2 1 0

上記のことを踏まえてプログラムにしてみると以下のようになる

Janken.rb
    def judge(human,computer)
        puts "あなたの手は" + @hand[human] + "です。"
        puts "コンピュータの手は" + @hand[computer] + "です。"
        var = human - computer
        if var == -1 || var == 2
            puts "あなたの勝ちです"
        elsif var == 1 || var == -2
            puts "あなたの負けです"
        elsif var == 0
            puts "あいこです"
        end
    end

プログラムの全文は以下リンク先から

Janken.rb

10
9
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9