Newer
Older
Ruby / asobi.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

def cyuusen(n)
  srand()
  m = rand(n)
  return m
end

def kakunin(x,y)
  if x == "\n"
    return "ng"
  end
    x = x.to_i
  if x >= 0 && x <= y
    return "ok"
  elsif x == 10
    return 10
  else
    return "ng"
  end
end


puts"親指のやつ"                       #完成です。がんばりました。
puts"これって名前あるのかなぁ?"
sleep(0.5)                            
                                       
puts"                             説明"
puts"数を言って、親指を立てて、"
puts"立てた親指の数と言った数が2回同じだったら勝つやつです。"
puts"プレイヤーは4人です。"
puts"3人は自動で行動します。残りの一人があなたです。"
puts"4人のうち、誰か1人が勝った時点でゲームを終了します。"
puts"行動は数字で決定します。行動可能なときに選択肢を提示します。"
puts"行動可能なときに、数字以外を入力した場合は0とみなします。"
puts"なお、行動可能なとき、「10」と入力するとゲームをやめることができます。"
puts"このゲームはenterで始めます。説明を読み終えたらenterを押してください。"
gets

namae = ["Aさん","Bさん","Cさん","あなた"]

te_a   = 2                 #変数 プレイヤー系
te_b   = 2
te_c   = 2
te_you = 2

yubi_a   = 0
yubi_b   = 0
yubi_c   = 0
yubi_you = 0
yubi_max = 8

jyunban = 0                #変数 システム系
kaisu   = 1
check = 0
n = 0

while true
  printf("          %d周目\n",kaisu)
  sleep  (0.5)
  printf("%sが数を言う番です\n",namae[jyunban])
  puts   "いっせーの!"
  if jyunban == 3
    while check != "ok" && check != 10                 #あなたの番
      printf("言う数を入力してください(0〜%dまで):",yubi_max)
      iu = gets
      check = kakunin(iu,yubi_max)          #答えになってないと無限ループ
      
    end
    iu = iu.to_i
    if check == 10
      break
    end
  else                         #あなた以外の番(ランダムiu)
    iu = cyuusen(yubi_max +1)
  end
  check = 0
  
  while check != "ok" && check != 10
    printf("出す数を入力してください(0〜%dまで):",te_you)
    yubi_you = gets                   #kakuninが使うため実は文字列
    check =kakunin(yubi_you,te_you)   #入力なしに対応!!
  end
  yubi_you = yubi_you.to_i            #ここで数字になる(言う数〜も同様)
  if check == 10
    break
  end
  printf("%d!\n",iu)
  
  yubi_a = cyuusen(te_a +1)
  yubi_b = cyuusen(te_b +1)
  yubi_c = cyuusen(te_c +1)
  yubi   = [yubi_a,yubi_b,yubi_c,yubi_you]

  puts"    指の数"
  while n < 4
    printf("%s:%d  ",namae[n],yubi[n])
    n += 1
  end
  n = 0
 
  kei = yubi_a + yubi_b + yubi_c + yubi_you
  printf("       合計:%d\n",kei)
  sleep(2)
  if kei == iu                            #誰かが当てたとき
    printf("%sが数を当てました!\n",namae[jyunban])
    yubi_max -= 1
    if jyunban == 0
      te_a   -= 1
    elsif jyunban == 1
      te_b   -= 1
    elsif jyunban == 2
      te_c   -= 1
    elsif jyunban == 3
      te_you -= 1
    end
    sleep(0.5)
    puts"    手の数"
       te = [te_a,te_b,te_c,te_you]
    while n < 4
      printf("%s:%d  ",namae[n],te[n])
      n += 1
       sleep(1)
    end
    print"\n"
    if te_a == 0 || te_b == 0 || te_c == 0 || te_you == 0   #誰かのteが0
      printf("%sの勝ちです!\n",namae[jyunban])
      sleep(0.5)
      break
    end      
  end
  jyunban += 1
  if jyunban == 4
    jyunban =   0
    kaisu   +=  1
  end
  n = 0
  check = 0
end
puts"それではゲームを終了します。また遊ぼうね!"