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)                # 青すぎたwwデバッグなう 無限混乱区域

  if x == "\n"
    return "ng(からうち)"
  end
  if /[0-9]+/ !~ x 
    return "ng(やま)"
  end
  if /\d+/ =~ x                 # これが効きすぎる、、、
    return "ng(d)"
  end
  if x.to_i == 0 && x != "0"    # この発想は賢いな、、
    return "ng(かつどん)"
  else
    x = x.to_i
    if x >= 0 && x <= y
      return "ok"
    elsif x == 10
      return 10
    else
      return "ng(いままでの)"
    end
  end
end

if false
puts"ゆびすま"                       #アップデートもがんばる(有言実行したい。。)
sleep(0.5)                           #動くけどまだ変わってないよ
                                       
puts"                             説明"
puts"数を言って、親指を立てて、"
puts"立てた親指の数と言った数が2回同じだったら勝つやつです。"
puts"人数は自分を入れて、4人までで選べます。"
puts"一人はあなたです。他のプレイヤーは自動で行動します。"
puts"誰か1人が勝った時点でゲームを終了します。"
puts"行動は数字で決定します。行動可能なときに選択肢を提示します。"
puts"行動可能なときに、数字以外を入力した場合は0とみなします。"
puts"なお、行動可能なとき、「10」と入力するとゲームをやめることができます。"
puts"このゲームはenterで始めます。説明を読み終えたらenterを押してください。"
gets

#if false                        # 謎??????if???もっといい方法ありそう
  while check != "ok"
    print"人数を決めてください(2〜4人):"
    ninzuu = gets
    check = kakunin(ninnzuu,4)
    if ninzuu == 0 || 1
      check = "ng"
    end
  end
#end
ninzuu = ninzuu.to_i
namae = []
if ninzuu <= 1
end


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 == 0
    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"それではゲームを終了します。また遊ぼうね!"
end

nanka = gets
check = kakunin(nanka,4)
p check
p nanka.to_i