LoginSignup
2
2

More than 5 years have passed since last update.

じゃんけんアプリを作ってみよう!!

Last updated at Posted at 2018-12-10

解答の手順

元となる、ひな型のプログラム

def janken
    puts "[0]:グー\n[1]:チョキ\n[2]:パー"
    player_hand = gets.to_i

    program_hand = rand(3)

    jankens = ["グー", "チョキ", "パー"]

    puts "あなたの手:#{jankens[player_hand]}, わたしの手:#{jankens[program_hand]}"

    if player_hand == program_hand
      puts "あいこで"
      # 返り値を返す
    elsif (勝ちの条件)
      puts "あなたの勝ちです"
      # 返り値を返す
    else
      puts "あなたの負けです"
      # 返り値を返す
    end
  end

  next_game = true

  puts "最初はグー、じゃんけん..."

  # じゃんけんを繰り返す
  while next_game do
    next_game = janken
  end

2.解答コード

def janken
    puts "[0]:グー\n[1]:チョキ\n[2]:パー"
    player_hand = gets.to_i

    program_hand = rand(3)

    jankens = ["グー", "チョキ", "パー"]

    puts "あなたの手:#{jankens[player_hand]}, わたしの手:#{jankens[program_hand]}"

    if player_hand == program_hand
      puts "あいこで"
      # 返り値を返す
      janken = true
    elsif player_hand - program_hand == -1 || player_hand - program_hand == 2
      puts "あなたの勝ちです"
      janken = false
    else
      puts "あなたの負けです"
      janken = false
    end
  end

  next_game = true

  puts "最初はグー、じゃんけん..."

  # じゃんけんを繰り返す
  while next_game do
    next_game = janken
  end

3.じゃんけんアプリで得られた学び

randメソッド

randを使うと乱数を生成できること。randメソッドに引数として数を渡すと「0」から「渡した数 - 1」の間でランダムに数を返せる

rand(100) # => 0〜99の中から1つ数字をランダムに返す

じゃんけんの手をつくる

【自分の手】0〜2までの手をターミナルから入力する
player_hand = gets.to_i
【相手の手】乱数で0〜2までの数値を生成する
program_hand = rand(3)

じゃんけんの手は文字列ではなく数値として扱うこと。その方が簡単だから。

勝ち、負け、あいこの判定(条件式)を書く

【あいこ】
if player_hand == program_hand
#あいこの条件は自分と相手の数値が一緒のとき
 puts "あいこで"
  return true
【自分の手が勝ち】
elsif player_hand - program_hand = -1 || player_hand - program_hand = 2
#ここで書いている勝ちの条件は
#自分 − 相手 = -1 または自分 - 相手 = 2のとき
 puts "あなたの勝ちです"
  return false
【自分の手が負け】
else
#あいこと勝ちの条件を書いたので、負けの条件は書かない
 puts "あなたの負けです"
  return false

あいこの場合はもう一度じゃんけんをさせたいので、1番に評価をさせるために最初に書くこと。返り値はtrueかfalseで返すこと。

あいこのときに、もう一度じゃんけんをさせる

next_game = true

  puts "最初はグー、じゃんけん..."

  # じゃんけんを繰り返す
  while next_game do
    next_game = janken
  end

if文で返り値がtrueであれば、変数next_gameに代入され、whileメソッドが実行される。メソッドの中身はjankenを呼び出すことでじゃんけんを繰り返すことができる。

gets

入力待ち状態になります。
入力されるまでプログラムは動きません。

to_iメソッド

文字列を数値に変換します。
ユーザーが打った数字は文字列の数字です。
それを数値に変換します。

2
2
2

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
2
2