HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0709
Shooエヴァみたいなデジタル時計4解決


Shoo

リンク

2009/7/9(Thu) 20:47:27|NO.26298

エヴァみたいな、残り時間時計を作りたいんですが、
残り時間の計算がうまくいきません。

アニメのイメージのようにプログラミングするにはどうしたらいいでしょう?





#include "hgimg3.as" width 640,480 title " 残り時間デジタル時計" ; 曜日文字列を配列に設定 Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" boxf 0, 0, 640, 480 color 0, 255, 0 pos 180,0 font "MS ゴシック",70,1 mes "現在時刻" repeat; 日付データを書式化 Year = ""+gettime(0)+"" ; 西暦年(4桁:yyyy) Month = strf("%02d", gettime(1)) ; 月 (2桁:MM) Week = Weeks(gettime(2)) ; 曜日 (文字列) Day = strf("%02d", gettime(3)) ; 日 (2桁:dd) Hour = strf("%02d", gettime(4)) ; 時間 (2桁:hh) Minute = strf("%02d", gettime(5)) ; 分 (2桁:mm) Second = strf("%02d", gettime(6)) ; 秒 (2桁:ss) MSecond = strf("%03d", gettime(7)) ; ミリ秒(3桁:xxx) ;変数 Time にまとめる Time = Year + "/" + Month + "/" + Day + "(" + Week + ") \n" Time += Hour + ":" + Minute + ":" + Second + ":" + MSecond redraw 0 ; ちらつきをなくすため仮想描画 color 0, 0, 0 ; 塗りつぶし色をBlack boxf 0, 70, 640, 200 ; 時刻表示部分を塗りつぶし pos 70, 70 ; カレントポジションを(0, 18)座標に指定 color 0, 255, 0 ; 文字色をGreen font "MS ゴシック",70,1 mes Time ; 現在時刻を表示 redraw 1 ; 実際に描画反映 color 255,128,0 pos 180,210 wait 1 ; ウェイト mes "残り時間" mes Remain onexit *exit loop *exit end



この記事に返信する


リンク

2009/7/9(Thu) 23:11:56|NO.26299

つまり、カウントダウンのこと…… ですよね?
hgimg3 を使ってるみたいですけど、
hggettime を使わないで gettime にした場合はこんな感じでしょうか。
残りの時間が200時間とか、すごく多くなるときは
大きい桁の部分を別の変数で管理すればなんとか使えると思います。

; 3分間待ってやr lim = 180000 ; 開始時の時間をひとつの変数に記憶 start = gettime(5) * 60000 start += gettime(6) * 1000 start += gettime(7) repeat ; 今の時間を取得 time = gettime(5) * 60000 time += gettime(6) * 1000 time += gettime(7) redraw 0 color 0, 0, 0 : boxf color 255, 255, 255 pos 0, 0 mes "始めたときの時間 " + start mes "今の時間 " + time n = lim - ( time - start ) mes "\n" + ( n / 60000 ) + ":" + ( n / 1000 \ 60 ) + ":" + ( n / 10 \ 100 ) redraw 1 await 16 loop



inovia

リンク

2009/7/9(Thu) 23:32:23|NO.26300

エヴァ風カウントダウンタイマー(5分)


// http://www.trojanbear.net/omake.htm#sevenbar // 上記サイトより"SEVENBAR"(7barP.ttf)をダウンロードして // インストールするとよりリアルになりますw #uselib "winmm" #cfunc timeGetTime "timeGetTime" Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" title "新世紀エヴァンゲリオン - 初号機風タイマー" buffer 2,640,480 color:boxf color 239,170,10 pos 10,10 : font msmincho,32,16 : mes "活動限界まで" pos 210,28 :font msmincho,14,16 : mes "ACTIVE TIME REMANING :" pos 10,50 : font msmincho,24,16 : mes "あと" pos 440,30 : font msmincho,64,16 : mes "内部" pos 440,90 : font msmincho,32,16 : mes "INTERNAL" line 430,30,620,30:line 620,30,620,120 line 430,120,620,120:line 430,30,430,120 pos 440,140 : font msmincho,20,16 : mes "主電源供給システム" pos 440,164 : font msmincho,14,16 : mes "MAIN ENERGY SUPPLY SYSTEM" line 430,138,620,138:line 620,138,620,180 line 430,180,620,180:line 430,138,430,180 color 239,10,10:font msmincho,32,16:boxf 580,38,610,114 gsel 0,0:gcopy 2,0,0,640,480 pos 60,64:color 239,170,10:font "7barP",128,16 mes "5:00:00" st=timeGetTime() ct=5*60*1000 //5分 repeat ;タイマー計算 et=timeGetTime() nt=et-st ;残量計算 fun=((ct-nt)/1000)/60 ;分 byo=((ct-nt)/1000)\60 ;秒 mb=(ct-nt)\100 ;ミリ秒 if ct<=nt:break ;カウント表示 pos 60,64:color 239,170,10:font "7barP",128,16 mes ""+fun+":"+strf("%02d",byo)+":"+strf("%02d",mb) ;現在時刻取得 Year = ""+gettime(0)+"" ; 西暦年(4桁:yyyy) Month = strf("%02d", gettime(1)) ; 月 (2桁:MM) Week = Weeks(gettime(2)) ; 曜日 (文字列) Day = strf("%02d", gettime(3)) ; 日 (2桁:dd) Hour = strf("%02d", gettime(4)) ; 時間 (2桁:hh) Minute = strf("%02d", gettime(5)) ; 分 (2桁:mm) Second = strf("%02d", gettime(6)) ; 秒 (2桁:ss) MSecond = strf("%03d", gettime(7)) ; ミリ秒(3桁:xxx) ;変数 Time にまとめる Time = Year + "/" + Month + "/" + Day + "(" + Week + ") \n" Time += Hour + ":" + Minute + ":" + Second + ":" + MSecond ;現在時刻表示 pos 70,240:font msmincho,70,16 mes Time ;画面更新 redraw 1 wait 1 redraw 0 ;背景削除 color:boxf 60,64,428,174:boxf 70,240,600,380 loop



inovia

リンク

2009/7/10(Fri) 18:44:54|NO.26318

訂正


mb=(ct-nt)\100 ;ミリ秒 ↓ mb=(ct-nt)\1000/10 ;ミリ秒



Shoo

リンク

2009/7/12(Sun) 22:13:01|NO.26341

おお、そんな方法が!

やってみます。



ONION software Copyright 1997-2023(c) All rights reserved.