#!/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