1.時計を作る
HSPで時計を作ってみましょう
◆どう作るか
何かを作るときは、どのように作るかを最初にまとめた方が制作が早く進みます。なのでどう作るかを考えましょう。今回は、
- gettime関数で時刻を取得
- 取得した時刻を表示
- repeat〜loop命令で以上を繰り返し
- 描画のチラつきを防止するため、redraw命令を使用
- あとは、適当にアレンジ
◆作成
どう作るかを考えたので、早速作成に取り掛かりましょう。◇gettime関数で時刻を取得
まずは1の「gettime関数で時刻を取得」です。time=str(gettime(4)) ;時を文字列型にしてtimeに代入 share=str(gettime(5)) ;分を文字列型にしてshareに代入 second=str(gettime(6)) ;秒を文字列型にしてsecondに代入gettime関数で取得した時/分/秒は数値型なので、後で画面表示させるときにめんどくさいです。なのでこの段階でstr関数を使い、文字列型に変換しています。
その後、それぞれを変数time、share、secondに代入しています。
◇取得した時刻を表示
次に2の「取得した時刻を表示」です。mes time+"時"+share+"分"+second+"秒" ;取得した時刻を表示ここはあまり説明はいらないですね。
「(??)時(??)分(??)秒」と表示する処理をしているだけですから。
◇repeat〜loop命令で以上を繰り返し
今までのスクリプトをつなげただけだと、時刻は表示されるものの更新はされません。なので更新がされるようにします。repeat color 255,255,255 : boxf ;白色で画面全体を塗りつぶす time=str(gettime(4)) share=str(gettime(5)) second=str(gettime(6)) color 0,0,0 ;文字の表示色を黒に設定 pos 0,0 ;描画先の座標を(0,0)に設定 mes time+"時"+share+"分"+second+"秒" wait 5 loopいままでの処理をrepeat命令で繰り返しています。その時に前表示した時刻が残ってしまうので、boxf命令で画面全体を白色で塗りつぶし、表示しています。pos命令で座標を(0,0)に指定しているのは、毎回の繰り返しで、自動的に座標が下のほうへ行ってしまうからです。また、wait命令を入れているのはCPUにかかる負荷を軽くするためです。
これで時刻の更新がされるようになります。しかし更新がされるたびにチラついて見にくくなってしまいます。
◇描画のチラつきを防止するため、redraw命令を使用
以上で時刻の更新がされるようにはなりましたが、Repeatする度に画面がチラつきます。なのでチラつかないようにします。repeat redraw 0 ;仮想画面上で描画するように設定 color 255,255,255 : boxf time=str(gettime(4)) share=str(gettime(5)) second=str(gettime(6)) color 0,0,0 pos 0,0 mes time+"時"+share+"分"+second+"秒" redraw 1 ;仮想画面での描画を実際の画面に反映 wait 5 loopこれでとりあえず時計が完成しました。
あとは、タイトルバーを変えたりウィンドウの大きさを変えたりして自分流にアレンジしてください。
◆完成スクリプト
title "時計" width 310,60 repeat redraw 0 color 0,0,0 : boxf time=str(gettime(4)) share=str(gettime(5)) if gettime(6)<=9 : second="0"+str(gettime(6)) : else : second=str(gettime(6)) color 255,255,255 pos 5,5 font "HG創英角ポップ体",50 mes time+"時"+share+"分"+second+"秒" redraw 1 wait 5 loop
| Powered by HSPLet 3.0 |
これがオレ様クオリティw
