|
|
|
2009/5/6(Wed) 19:53:04|NO.25005
残り時間を、ミリセコンドまでカウントダウンしたいのですが
計算部分が、うまくいかずエラーが出てしまいます。
変数を、どのように扱ったらいいのでしょうか?
#include "hgimg3.as"
screen 0,1024,768
title "カウントダウン時計"
; 曜日文字列を配列に設定
Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
boxf 0, 0, 1024, 140 ; 時刻表示部分を塗りつぶし
color 0, 255, 0
pos 230,0
font "MS ゴシック" ,135 ,17
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 + ") "
Timee = Hour + ":" + Minute + ":" + Second + ":" + MSecond
Rem = Year-Y + "/" + Month-M + "/" + Day-D + "(" + Week + ") "
Remm = Hour-H + ":" + Minute-Min + ":" + Second-Sec + ":" + MSecond-MS
Y =2010
M =10
D =10
H =10
Min =10
Sec =10
MS =10
redraw 0 ; ちらつきをなくすため仮想描画
color 0, 0, 0 ; 塗りつぶし色を白
boxf 0, 140, 1024, 768 ; 時刻表示部分を塗りつぶし
pos 0, 140 ; カレントポジションをに指定
color 0, 255, 0 ; 文字色を黒
font "MS ゴシック" ,135 ,17
mes Time ; 現在時刻を表示
pos 100, 280
mes Timee
color 255, 0,0
pos 250, 400
mes "残り時間"
mes Rem
mes Remm
redraw 1 ; 実際に描画反映
wait 1 ; ウェイト
onexit *exit
loop
*exit
end
<\pre>
| |
|
2009/5/6(Wed) 20:11:32|NO.25006
文字列変数と数値変数をごっちゃにしていませんか?
文字列変数は あくまで 文字をあらわすものであって、数値ではないです。
ですから、数値と同じように計算はできません。
エラーは、文字列変数から引き算をしようとしているところで起きています。
int関数でいったん数値に直すなり、最初から数値としても保存しておくなりしましょう。
|
|
2009/5/8(Fri) 00:12:10|NO.25038
分けてやってみたらうまくいきました。
しかし、”残り時間”表示の部分が、ゼロが消えてしまいます。
どこに、”%02d”を入れたらよいのでしょうか?
; 簡易デジタル時計 for Hot Soup Processor 3.x
; Altキーなどを押すとHSPシステムの動作が止まってしまうため
; 表示も停止してしまいます(仕様)
#include "hgimg3.as"
screen 0,1024,768
title "簡易デジタル時計"
; 曜日文字列を配列に設定
Weeks = "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
boxf 0, 0, 1024, 140 ; 時刻表示部分を塗りつぶし
color 0, 255, 0
pos 230,0
font "MS ゴシック" ,135 ,17
mes "現在時刻"
//設定時刻
Yr = 2013
Mr = 10
Dr = 10
Hr = 10
Minr = 10
Secr = 60
MSr = 1000
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 + ") "
Timee = Hour + ":" + Minute + ":" + Second + ":" + MSecond
//文字列→整数変換
Y =int(Year)
M =int(Month)
D =int(Day)
H =int(Hour)
Min =int(Minute)
Sec =int(Second)
MS =int(MSecond)
//計算
Ya = Yr-Y
Ma = Mr-M
Da = Dr-D
Ha = Hr-H
Mina = Minr-Min
Seca =Secr-Sec
MSa =MSr-MS
//整数→文字列変換
Yw = str(Ya)
Mw = str(Ma)
Dw = str(Da)
Hw = str(Ha)
Minw = str(Mina)
Secw = str(Seca)
MSw = str (Msa)
Rem = Yw + "年 " + Mw + "月 " + Dw + "日 "
Remm = Hw + ":" + Minw + ":" + Secw + ":" + MSw
redraw 0 ; ちらつきをなくすため仮想描画
color 0, 0, 0 ; 塗りつぶし色を白
boxf 0, 140, 1024, 768 ; 時刻表示部分を塗りつぶし
pos 30, 145 ; カレントポジションを(0, 18)座標に指定
color 0, 255, 0 ; 文字色を黒
font "MS ゴシック" ,130 ,17
mes Time ; 現在時刻を表示
pos 100, 270
mes Timee
color 255, 0,0
pos 250, 390
mes "残り時間"
pos 90, 510
mes Rem
mes Remm
redraw 1 ; 実際に描画反映
wait 1 ; ウェイト
onexit *exit
loop
*exit
end
<\pre>
| |
|
2009/5/8(Fri) 00:44:59|NO.25039
ただの「str」になってました
//整数→文字列変換
yw =strf("%02d", ya)
mw =strf("%02d", ma)
dw =strf("%02d", da)
hw =strf("%02d", ha)
Minw = str(Mina)
Secw = str(Seca)
MSw = str (Msa)
|
|
2009/5/9(Sat) 01:01:33|NO.25049
お、そんなことだったか
完成したら、UPします
|
|