忍者ブログ

マドノマグラの初心者自作ゲーム制作日誌 迷走モード

プログラミング初心者が自作ゲームを作成してみようとする動きを記す。現在迷走中。

ブログ履歴

2010/11/06: HSP3.22の環境を整えてみる
2009/11/09: Rubyで適当版自分用関連記事リンク作成プログラムを作る
2009/06/04: Visual C++(DXライブラリ使用)の環境を整えてみるも休止状態に
2009/03/17: ActionScript勉強の環境を整えるも結局休止状態に
2006/07/15: とりあえず分岐型ゲームを作る グリーンタワーVer1.2 ダウンロード(zip)
2006/07/02: ブログスタート。NScripterで何かを作ろうとする

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

一人で祝おう誕生日「初めてのプログラミング」12.2練習問題2問目

初めてのプログラミングの12.2練習問題2問目、一人で祝おう誕生日界を考えてみる。

誕生日から10億秒後の世界「初めてのプログラミング」12.2練習問題1問目の入力プログラムをベースに考えることに。

ルール確認
生年月日を入力。その次の年から去年までの誕生日を祝う。
そして、今年の誕生日と現在の日付を比較。今年の分を祝うべきかを決定させる。
なお、今年を入力したときに年齢が出さないための対処法も場当たり的に追加した。

一応、自分の生年月日、自分の生年の大晦日、2007年の2パターン、2008年のパターンをテストして、ちゃんと動いた。

初めてのプログラミング
Chris Pine
オライリー・ジャパン
売り上げランキング: 161616
おすすめ度の平均: 3.5
3 Rubyを使ってHello, Worldから
4 丁寧な解説
4 Ruby



happybirthday0.rb


=begin
年月日以降、年齢計算。
その年から去年までの誕生日を祝う
そして今年のときが勝負。日付の引き算を活用して
今年を祝うべきかを決定させる方針
=end

def input_data(comment, top, bottom)
puts "生まれた"+ comment + "を入れてね。ただし" + top.to_s + "から" + bottom.to_s + "の範囲でお願いね"
data = gets.chomp.to_i
if data =="" || data < top || data > bottom
puts "範囲外だからもう一回打ち込んでね"
data = input_data(comment, top, bottom)
end
data
end

def day_input_data(year, month)
missing = true
while missing
missing = true
puts "生まれた日にちを入れてね"
data = gets.chomp.to_i
if data == "" || data < 1 || data >31
puts "範囲外なのでもう一度お願いね"
elsif data == 31 && ( month == 2 || month == 4 || month == 6 || month == 9 || month == 11)
puts "にしむくさむらいには、31はないですよ、もう一回入れてね"
elsif data == 30 && month == 2
puts "2月30日ってないんだよねー。もう1回入れてね"
elsif data == 29 && (( year%4 != 0 || year%100 == 0 ) && year%400 != 0)
puts year.to_s + "年はうるう年じゃないんですよ。もう一回入れてね"
else
missing = false
end
end
data
end

def set_input(setting, time_data)
setting.each do |contents|
time_data.push input_data(contents[0], contents[1], contents[2])
end
time_data
end

y = Time.now
# yearメソッドを特別使用
this_year = y.year

ym_set = [["年", 1970, this_year], ["月", 1, 12]]

time_data = []

time_data = set_input(ym_set,time_data)
time_data.push day_input_data(time_data[0], time_data[1])

# whileループで1年ごとをいわうことに・

age = 1
while age < (this_year - time_data[0] )
puts (time_data[0] + age).to_s + "年" + time_data[1].to_s + "月"+ time_data[2].to_s + "日 " + age.to_s + "歳の誕生日おめでとう"
age += 1
end

# 今年を祝うか祝わないかの瀬戸際
birthday = Time.mktime(this_year, time_data[1], time_data[2])

if birthday < y && (this_year != time_data[0])
puts this_year.to_s + "年" + time_data[1].to_s + "月"+ time_data[2].to_s + "日" + " " + (this_year - time_data[0]).to_s + "歳の誕生日おめでとう"
end
PR

この記事にコメントする

NAME
TITLE
MAIL
URL
COMMENT
PASS

この記事へのトラックバック

この記事にトラックバックする:

PR

カテゴリー

最新記事

アーカイブ

プロフィール

HN:
マドノマグラ
性別:
非公開
職業:
趣味:
駄文書き
自己紹介:
ゲームを作ろうとしているうちに、言語学習に飽きていく。典型的なダメな人パターンに陥るアホな人

リンク

ブログ内検索

バーコード

RSS

忍者ブログ │ [PR]