Newer
Older
Ruby / j2215_last.rb
@MIZUNO Manaka MIZUNO Manaka on 20 Jan 2023 3 KB 2023-01-20 22:46:17
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
#このプログラムは、12月17日の発表会用のプログラムを改良したものです。
#このプログラムのテーマは、ご飯を決めるのに時間がかかる人や、買い物のときによく要らないものを買ってしまう人の困りごとを解決するプログラムです。
#このようなテーマにした理由は、僕自身も、買い物のときに要らないものを買ってしまうことがよくあるからです。
#料理の種類は、主食、主菜、副菜、汁物が各12種類の合計48種類で、CSVファイルを利用しているので、料理の種類を増やしても、プログラムの部分は長くなりません。また、ご飯を決めるときに、嫌いな料理が出てきたら、変えることができるようになっています。
#54行目で配列「daikin」の要素を文字列から数値に変え、75行目で入力した代金と配列の「daikin」の要素を足したものを比べています。
#このプログラムで自分の困りごとを解決できたので、さらに料理の種類を増やしていきたいと思っています。
require "csv"
jikoku = %w(朝 昼 夜)
bangou = 0
syurui = %w(主食 主菜 副菜 汁物)
kyounogohan = []
kaumono = []
daikin = []
zairyou = CSV.read("kaimono.csv")
while true
  print("0番:朝\n1番:昼\n2番:夜\n今の時刻を選んでね:")
  bangou = gets.chomp.to_i
  if bangou == 0 || bangou == 1 || bangou == 2
    printf("今の時刻は%sだよ!\n今から%sご飯に何を食べるか選ぶよ!\n", jikoku[bangou], jikoku[bangou])
    sleep(5)
    while true
      bangou = 0
      while bangou < 4
        sentaku = rand(zairyou.length)
        if sentaku % 4 == bangou
          printf("%sは%sだよ!\n", syurui[bangou], zairyou[sentaku][0])
          sleep(2)
          kyounogohan << zairyou[sentaku][0]
          kaumono << zairyou[sentaku][1]
          daikin << zairyou[sentaku][2]
          bangou += 1
        else
          redo
        end
      end
      puts("\nこれで決まりでいいかな?\n1:いい\n2:変える")
      bangou = gets.chomp.to_i
      if bangou == 1
        break
      elsif bangou == 2
        bangou = 4
        while bangou > 0
          kyounogohan.shift
          kaumono.shift
          daikin.shift
          bangou = bangou - 1
        end
      end
      redo
    end
    puts("\nこれから家にない材料を買いに行くよ!\n買うものを予想して順番に選ぼう!\n")
    daikin.map!(&:to_i)
    sleep(7)
    zairyou.each do |a|
      p a
    end
    bangou = 0
    while bangou < 4
      printf("\n%sに必要なものを上から選ぼう!\n", kyounogohan[bangou])
      sentaku = gets.chomp
      if sentaku == kaumono[bangou]
        puts("正解!")
        bangou += 1
      else
        puts("不正解...もう1度選び直そう!")
        redo
      end
      sleep(2)
    end
    while true
      puts("\n代金を計算しよう!")
      bangou = gets.chomp.to_i
      if bangou == daikin.inject(:+)
        puts("正解!")
        break
      else
        puts("不正解...もう1度選び直そう!")
        redo
      end
      break
    end
    puts("これで必要なものはそろったよ!!")
    break
  else
    puts("その選択肢はないよ!")
    redo
  end
end