クジラの練習帳014(じゃんけんゲーム)

クジラの練習帳014

f:id:whale_86:20210107170034j:plain

じゃんけんの画像が無かったことをここで謝罪させていただきます。

 

技術ブログの更新初めは軽めに、

何も見ずに「じゃんけんができるゲーム」を作り、後で調べて出てきたじゃんけんゲームと比較してみたいと思います。

 

作成したゲーム

f:id:whale_86:20210107172410p:plain

ユーザー(user)の対戦相手をボット(bot)。

botは配列からランダムに手を取得する簡単な仕組みになっていて、userが入力した手とif文で比較し結果を出力している。

出力結果

f:id:whale_86:20210107172455p:plain

個人的不満点

  • コードが長くなっている(確実)
  • グー、チョキ、パーを数字で管理したいが分かりにくのではないか?
  • randメソッドを使いたい
  • 勝ち負けの判断をもっと簡単に出来ないか?

 

検索して書き直し(めっちゃ良くなった)

userに何を出すか入力させる場面

puts "[0]グー\n[1]チョキ\n[2]パー\nの中から選択し数字で入力してください"
user = gets.to_i

これで不満点の2つ目3つ目がクリアできるようになった!

 

botの手を決める

bot = rand(3)

 randメソッドで乱数生成をする。

 

userとbotが何を出したかを表示させる

janken = ["グー", "チョキ", "パー"]
puts "botは#{janken[bot]}"
puts "あなたは#{janken[user]}"

これで数字からグーチョキパーの表示をすることができた。

 

勝ち負け判断

if bot - user == -2 || bot - user == 1
puts "勝ち"
elsif bot == user
puts "あいこ"
else
puts "負け"
end

 こちらは他の方のブログで書かれていた勝ち負け判断の中で一番短く理想だと感じました。

f:id:whale_86:20210107190404j:plain

 

出力結果

f:id:whale_86:20210107190605p:plain

全体

puts "ジャンケンゲーム\n[0]グー\n[1]チョキ\n[2]パー\nの中から選択し数字で入力してください"
user = gets.to_i

bot = rand(3)

janken = ["グー", "チョキ", "パー"]
puts "\nbotは#{janken[bot]}"
puts "あなたは#{janken[user]}\n結果は..."

if bot - user == -2 || bot - user == 1
puts "勝ち"
elsif bot == user
puts "あいこ"
else
puts "負け"
end

何も見ずに作った物と検索した後で作った物との差を縮められるように今年も頑張ります。ありがとうございました。

 

参考にした記事

Rubyでじゃんけんプログラムを作成 - Qiita

Rubyで「じゃんけんゲーム」を試作 - Qiita

 

前回:クジラの練習帳013(カレンダー作成) - whale_86’s blog