第 7 回 ゼミ紹介 レポート課題 氏名:吉田 亘 学籍番号:C1102005 語学クラス:英語2 コース(系):制作マネジメント A a <<仕様書>> <企画の意図> タイピングを早く打てるようになりたいと思い、プログラムを作成しました。 実際にタイピングに掛かった時間や複数回行った場合、その掛かった時間を打ち 込めば、平均を求められるように制作した。 <遊び方> 5文字のタイピングの早さを計測します。準備は良いですか? と、聞かれるので yes と打ち込む。 カウントが行なわれ、打ち込む文字が表示されるのでタイピングを行う。 次に、もう一度やりますか? と、聞かれるので yes か no を選ぶ。 何回かタイピングをしたら、その掛かった時間を打ち込んでいくと 平均時間が求められるようになっている。 <連絡先> このプログラムに対しての意見、感想などは下記のアドレスまでお願いします。 c109001@e.koeki-u.ac.jp b #! /usr/koeki/bin/ruby tipe = ["Apple", "Sleep", "Great", "Japan", "ABCDE", "(>v<)", "(@m@)", "Space", "Books", "Sound", "Enter", "13579", "upotu", "Black", "Koeki"] kaitou = 1 print"5文字のタイピングの早さを計測します。準備は良いですか?\n" print"yes or no\n" junbi = gets.chomp! if junbi == "yes" sleep(1) print"表示されたもの打ち込んで下さい。\n" print"計測開始まで…\n" sleep(1) print"3\n" sleep(1) print"2\n" sleep(1) print"1\n" else print"Good-bye\n" exit(1) end sleep(1) while kaitou <= 1 srand comp = rand(15) print"\n" printf("%s\n",tipe[comp]) start = Time.now user = gets.chomp! if tipe[comp] == user print"終了ー!\n" kaitou += 1 else print"miss!もう一度!!\n" redo end a_time = Time.now - start printf("タイピングの早さは%3.2f秒でした。\n",a_time) print"もう一回やりますか?\n" print"yes or no\n" junbi = gets.chomp! if junbi == "yes" sleep(1) print"表示されたもの打ち込んで下さい。\n" print"計測開始まで…\n" sleep(1) print"3\n" sleep(1) print"2\n" sleep(1) print"1\n" sleep(1) redo else print"お疲れさまでした。\n" break end end def speed(time) total = 0.0 for average in time total += average end total / time.length end byou = Array.new while true STDERR.print("\nタイピングに掛かった秒数を教えて下さい。(終了はCrtl+D)\n") STDERR.print("数秒は小数点で入力して下さい。 例) 2.55秒 = 2.55\n") image = gets if image == nil break end byou << image.to_f end printf("\nあなたのタイピングの平均秒数は %3.2f 秒です。 \n",speed(byou)) ------------------------------------------------------------------------- pan{c110200}% ./report.rb [~/Ruby] 5文字のタイピングの早さを計測します。準備は良いですか? yes or no no Good-bye pan{YOSHIDA Wataru}% ./report.rb [~/Ruby] 5文字のタイピングの早さを計測します。準備は良いですか? yes or no a Good-bye ----------------------------------------------------------------- 打ち込まれたものを全て文字列にし、yes以外の文字はif文とexitを使い 強制終了させられるようになっている。 ----------------------------------------------------------------- pan{YOSHIDA Wataru}% ./report.rb [~/Ruby] 5文字のタイピングの早さを計測します。準備は良いですか? yes or no yes 表示されたもの打ち込んで下さい。 計測開始まで… 3 2 1 Sound Sound 終了ー! タイピングの早さは3.52秒でした。 もう一回やりますか? yes or no ------------------------------------------------------------------ カウントは sleep で1秒ごと間をあけている。 カウント後 Time.now で計測を始める。 表示されるものは乱数によって tipe の中に入っている15の文字からランダムに 選ばれている。 次に whils を使ってタイピングが成功するまで繰り返しをしている。 1回成功すればいいので kaitou <= 1 としif文を使い表示されたものと、 入力されたものが同じになったら kaitou に1足されるようになっている。 ------------------------------------------------------------------- 表示されたもの打ち込んで下さい。 計測開始まで… 3 2 1 Apple Spple miss!もう一度!! -------------------------------------------------------------------- 入力されたものが同じでない場合は erdo で繰り返しを無効化し、 その回の繰り返しの先頭からやりなおしをしている。 2地点で現在時刻を取得し、差をとるり経過時間を調べている。 このプログラムではカウント直後とタイピング直後の時刻の差を取り タイピングの早さにしている。 -------------------------------------------------------------------- タイピングに掛かった秒数を教えて下さい。(終了はCrtl+D) 数秒は小数点で入力して下さい。 例) 2.55秒 = 2.55 3.52 タイピングに掛かった秒数を教えて下さい。(終了はCrtl+D) 数秒は小数点で入力して下さい。 例) 2.55秒 = 2.55 5.70 タイピングに掛かった秒数を教えて下さい。(終了はCrtl+D) 数秒は小数点で入力して下さい。 例) 2.55秒 = 2.55 ^D あなたのタイピングの平均秒数は 4.61 秒です。 ------------------------------------------------------------------ total += average 平均を求めるために合計を求め、total / time.length で平 均を求める。 配列を作り、imageをとる。 if image == nil で、もしmageがなかったらwhileからぬける。 配列に image を少数に変換して加えていく。 広告ページ http://roy/~c110200/advertise2/ 2 長いプログラムになったので時間が掛かった。 ホームページの作り方を忘れていたので、ホームページ作りの方が時間が掛かっ た。 3 http://roy/~madoka/2011/r2/ 2011 年度 基礎プログラミング II 講義ノート(シラバス) 鏡 登志晃 須藤 充司