数あるプログラム言語の中で、今最も勢いのある言語の一つRuby。

別の言語のプログラマ、プログラムに興味はあるけどやったことない人。
みんなで一緒にRubyを学びましょう。

公開日:2008.03.12

じゃんけんゲームを作る - 1

この記事はRubyやirbなどの環境構築が終わっていることを前提としています。 まだ環境構築ができていない方は以下の記事を参照して構築してください。

Rubyのインストール

今回はジャンケンプログラムを作ってみました。 60行ほどありますが、まずは以下のプログラムを入力し、Janken.rbというファイル名で保存してください。

Janken.rb

01 : #初期設定
02 : hand = {1=> "グー", 2=>"チョキ", 3=>"パー"}
03 : win = 0
04 : lost = 0
05 : even = 0
06 : history = "戦績:"
07 : 
08 : while
09 :    #画面表示
10 :    (1..3).each{|i|
11 :        print i, ": ", hand[i], "\n"
12 :    }
13 :    print "e: 終了\n"
14 : 
15 :    #キー入力
16 :    key = nil
17 :    until ["1", "2", "3", "e"].member?(key)
18 :        print "入力してください"
19 :        key = gets.chomp
20 :    end
21 : 
22 :    #入力文字がeならば終了
23 :    if key == "e" then
24 :        exit
25 :    end
26 : 
27 :    #playerの手を数値として保持
28 :    player = key.to_i
29 : 
30 :    #乱数取得によりコンピュータの手を決定
31 :    computer = rand(3) + 1
32 : 
33 :    #お互いの手を表示
34 :    print "あなたの手: ", hand[player], "\n" 
35 :    print "コンピュータの手: ", hand[computer], "\n"
36 : 
37 :    #勝敗、あいこを判定
38 :    result = (player - computer) % 3
39 :    if result == 0 then
40 :        #あいこの場合
41 :        print "あいこです\n"
42 :        even += 1
43 :        history += "-"
44 :    elsif result == 1 then
45 :        #プレイヤーの負けの場合
46 :        print "あなたの負けです\n"
47 :        lost += 1
48 :        history += "×"
49 :    elsif result == 2 then
50 :        #プレイヤーの勝ちの場合
51 :        print "あなたの勝ちです\n"
52 :        win += 1
53 :        history += "○"
54 :    end
55 : 
56 :    #戦績表示
57 :    print history, "\n"
58 :    printf "%s勝%s敗%s分\n", win, lost, even
59 :    print "エンターキーを押してください\n"
60 :    gets
61 : end

保存したら実行するだけです。 ファイルを保存した場所で

ruby Janken.rb

と入力します。 このサイトを見てWindowsの環境を構築した人であればファイルをダブルクリックしても実行されます。

遊び方はいたって単純です。 最初に以下の表示がされますので、「グー」「チョキ」「パー」のいずれを出すかを選んで該当するキーを入力してください。ゲームを終了したい場合は「e」を入力します。

1: グー
2: チョキ
3: パー
e: 終了
入力してください

キーを入力すると自分の手とコンピュータの手が表示されて勝敗が決まります。勝敗と戦績が表示されるとまた初めの画面に戻りますので、あとは繰り返しとなります。

このプログラムでは主に以下の要素が重要なポイントになります。

  1. キー入力

    プレイヤーが出す手をキーボードから入力する

  2. 乱数生成

    コンピュータの手をランダムに決定する

  3. 勝敗判定

    勝敗を判定して戦績を表示する

これら一つ一つの要素に分解して考えれば難しいことはしていません。 実際の解説は次回行います。