読者です 読者をやめる 読者になる 読者になる

へべれけ

ゲームとDTMと本と煙草と酒と泪と男と女

Rubyでじゃんけんゲーム

会社の経費精算のタイミングのアレやソレやっぷりで、今月もうピンチ。観鈴ちんぴんち。

さっさとおちんぎん高くて働きやすいとこに行きたいので、今日もお勉強。
仕事中の技術勉強がてらにRubyで簡単なゲームを作ってみた。
ほら、よくスーパーとか駄菓子屋とかに置いてあったじゃんけんのゲーム機とかあったじゃん。アレだよアレ。

環境

Rubyは構築済み。バージョンは2.2
相変わらず環境はAmazon EC2。というかそんなややこしいことはしていないので、どんなLinux環境でも普通に動くと思う。

ソースコード

まずは「ruby使うよー!」ということと、起動した時に表示されるテキストを設定する

vim janken.rb

#!/usr/bin/ruby
puts 'じゃんけん' #プログラムを起動した時に最初に表示される文字列
sleep 1 # 1秒間次の表示を待つ。ただの演出

#プレイヤー側の入力
puts 'なにを出しますか? 数字を入力してね'
puts '1 グー'
puts '2 チョキ'
puts '3 パー'
input_value = gets #このメソッドでプレイヤー側の入力を受け付ける


ここからはCPU側の挙動になる。

#CPU側の挙動
cpu = rand(3) + 1 #CPUを'cpu'として定義。'rand'メソッドを使って以下の3つの手を出すように命令している。”(0~2という3つの数字) + 1 ”で(1~3)にしている
case cpu #プレイヤーのcase構文
 when 1 # rand が 1 のとき
  puts 'グー'
 when 2 # rand が 2 のとき
  puts 'チョキ'
 when 3 # rand が 3 のとき
  puts 'パー'
end

ここからじゃんけんの勝敗の判定になる。

#勝敗判定
player = input_value.to_i #上の'gets'メソッドで受け付けた引数をここに'input_value.to_i'の変数で受けている。
case player #case構文
when 1 #プレイヤーがグーの時
 puts 'あなたはグーを出した!'
  case cpu #cpu側のcase文
   when 1 #CPUがグーなら
    puts '引き分け'
   when 2 #ロボがチョキなら
    puts '勝利'
   when 3 #CPUがパーなら
    puts '敗北'
end
when 2 #プレイヤーがチョキの時
  puts 'あなたはチョキを出した!'
   case cpu
    when 1 # CPUがグー
     puts '敗北'
    when 2 # CPUがチョキ
     puts '引き分け'
    when 3 # CPUがパー
     puts '勝利'
end
when 3 #プレイヤーがパーの時
  puts 'あなたはパーを出した!'
   case cpu
    when 1 # cpuがグー
     puts '勝利'
    when 2 # cpuがチョキ
     puts '敗北'
    when 3 # cpuがパー
     puts '引き分け'
  end
else # どの when の条件も成立しなかったとき
  puts 'あなたは何も出さなかった!'
  puts 'あなたの負けです'
end

とまぁこんな具合。if構文でもできるそうだが、素直にcase構文のほうがわかりやすいと思った。