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

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

def kakunin(x,y)
  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"なお、行動可能なとき、「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.to_i
      check = kakunin(iu,yubi_max)          #答えになってないと無限ループ
    end
    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.to_i
    check =kakunin(yubi_you,te_you)
  end
  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
      printf("%sの勝ちです!\n",namae[jyunban])
      sleep(0.5)
      break
    end      
  end
  jyunban += 1
  check = kakunin(jyunban,3)
  if check == "ng"
    jyunban =   0
    kaisu   +=  1
  end
  n = 0
  check = 0
end
puts"それではゲームを終了します。また遊ぼうね!"