<html> |
【保存ファイルの準備】 エディタ(メモ帳)とブラウザ(Internet Explorer)を使って基本のタグを書いたHTMLファイルを作成します。 |
| <html> <head> <title>ストップウォッチ</title> </head> <body> <h3>ストップウォッチ</h3> <hr> <form name="form_sw"> <input name="counter" type="text"> <input name="bstart" type="button"value="スタート"> <input name="breset" type="button"value="リセット"> </form> </body> </html> |
【ストップウォッチの説明】 時間を計るための道具がストップウォッチです。 スタート/ストップのボタンを使って、計測を開始したり、止めたりします。通常はこれを1つのボタンで行います。 【フォーム】 フォームには時間の表示覧と2つのボタンを用意します。 |
<html> function reset_form() { |
【初期設定】 まず、時計を「0」に設定するところから始めます。 変数timerを初期値の「0」にし、フォームにも「0」を出力します。
|
<html> function reset_form() { |
【フォームからの呼び出し】 フォームのボタンを押すと、ユーザー関数を呼び出すように設定しておきましょう。 リセットボタンには、先ほど作ったユーザー関数reset_formの呼び出しを記述します。最後には必ず「()」を付けます。これでユーザー関数だと判ります。 スタートボタンには、次に作るユーザー関数start_countの呼び出しを記述します。 |
(省略) <script language="javascript"> function reset_form() { (省略) |
【時間を計測する】 ユーザー関数start_countのスクリプトを作っていきましょう。 時間を計測には、タイマーという機能を使います。タイマーの呼び出しと、呼び出されて繰り返す処理の2つが必要になります。
次に呼び出されるユーザー関数count_upです。
まだ、時計が進む機能しかありませんので、スタートボタンを押して時計が動くことだけ確認してください。 |
(省略) <script language="javascript"> function reset_form() { (省略) |
【時間を止める】 時計を止めるために、まず準備をしましょう。
次に、この変数sw_statusを使って、分岐を作ります。
|
(省略) <script language="javascript"> function reset_form() { (省略) |
【フォームを判りやすく改良】 時計が動作していることは、表示の時間が増えていることで判ります。 スタートボタンを押したときの分岐の中で、変数sw_statusに対応した表示に切り換えます。 |
(省略) <script language="javascript"> function reset_form() { (省略) |
【リセットボタンの機能を改善】 さて、ここでリセットボタンの機能を見直しましょう。 ユーザー関数reset_formに1行付け加えます。
|
(省略) <script language="javascript"> function reset_form() { (省略) |
【時刻表示の改良】 時刻の表示は、1秒単位で変数timerの中身をそのまま表示しています。 ユーザー関数count_formatを作って、そこに数値を受け渡すと、整えられた形式で値(文字列)が戻ってくるようにします。 ユーザー関数の呼び出しは2ヶ所あります。 ユーザー関数count_formatでも、引き渡された値を受け取るために変数numを用意します。 では、ユーザー関数count_formatの中を見ていきます。
2行目と3行目の式には、「Math.floor()」という関数が使われています。 最後の式は「+」を使っていますが足し算ではありません。JavaScriptでは文字列をつなぐのにも「+」が使われるのです。他のプログラム言語では「&」を使うことがあります。
|
(省略) <script language="javascript"> function reset_form() { (省略) |
【時刻表示の桁を揃える】 これでうまく行ったかと思ったら、実際に動かしてみるとあることに気が付きます。 どれも同じ処理を行うのでユーザー関数にして呼び出しても良いのですが、繰り返しても3行で済むので、それぞれに記述してしまいましょう。
|
【完成】
これでストップウォッチの完成です。
タイマー機能は、ゲームのプログラムでは良く使いますので、覚えておくと便利です。
以下に改良した2つのスクリプトを載せておきます。
1つは、計測時間を0.1秒単位にしたもの。もう1つは、ラップタイムを計測できるものです。
(省略) <script language="javascript"> function reset_form() { (省略) |
【計測単位を0.1秒にする(1)】 ユーザー関数start_countにあるタイマーの呼び出し間隔を「1000」から「100」にします。 ユーザー関数count_upにある「timer++」を「timer = timer + 0.1」に変更しても良いのですが、「0.1」を10回足すと計算に誤差が生じるため、これはお奨めできません。
ユーザー関数count_formatで、単位を調節しましょう。 |
(省略) <script language="javascript"> function reset_form() { (省略) |
【計測単位を0.1秒にする(2)】 表示に1つ問題が生じていますので、これを修正したいと思います。 そこで、表示の小数点以下を揃えるための関数を利用しましょう。 |
(省略) <form name="form_sw"> function reset_form() { (省略) |
【ラップタイムを表示する】 まず、フォームにボタンを1つ足します。 スクリプトは下から見ていきましょう。
次にユーザー関数count_upを見てみましょう。 最後に1つ工夫をするため、ラップ表示中にストップボタンが押されたとき、止めた時間を表示させます。 |
【改良したプログラム】
大幅に改良して記録式ストップウォッチを作りました。 cookieという機能を使い、計測した時刻を10件分記録して表示します。