HSP | むか~し作り途中であきらめたデジタル時計 (その2)
HSP | むか~し作り途中であきらめたデジタル時計
; 時間を示す枠
pos 0,0 : gcopy 2,0,0,640,480
pos 68,68*3 : gcopy 5,0,0,68/2,68 ; 「:」
pos 68*5/2,68*3 : gcopy 5,0,0,68/2,68 ; 「:」
gosub *player
redraw
await 30
goto *main_n
} else {
width 320,240
title "デジタル時計 - エコノミーモード"
*main_e
redraw 0
gmode 0,320,240
pos 0,0 : gcopy 101,0,0,320,240 ; 背景
gmode 4,320,240,256 : color 0,0,1
if separate=1 : pos 0,0 : gcopy 106,0,0,320,240
; 何時?
hours_pos=34*(gettime(4)-3)
pos 0,0 : gcopy 103,0,hours_pos,34,limit(34*24-hours_pos,0,240)
if hours_pos>=34*(0-4) and hours_pos<34*(2-2) : gcopy 103,0,hours_pos+24*34,34,34*24-hours_pos-24*34
if hours_pos>34*(21-4) and hours_pos<34*(23-2) : gcopy 103,0,hours_pos-24*34,34,34*24-hours_pos+24*34
; 何分?
minutes_pos=34*(gettime(5)-3)
pos 51,0 : gcopy 104,0,minutes_pos,34,limit(34*60-minutes_pos,0,240)
if minutes_pos>=34*(0-4) and minutes_pos<34*(2-2) : gcopy 104,0,minutes_pos+60*34,34,34*60-minutes_pos-60*34
if minutes_pos>34*(57-4) and minutes_pos<34*(59-2) : gcopy 104,0,minutes_pos-60*34,34,34*60-minutes_pos+60*34
; 何秒?
seconds_pos=34*(gettime(6)-3)
pos 102,0 : gcopy 104,0,seconds_pos,34,limit(34*60-seconds_pos,0,240)
if seconds_pos>=34*(0-4) and seconds_pos<34*(2-2) : gcopy 104,0,seconds_pos+60*34,34,34*60-seconds_pos-60*34
if seconds_pos>34*(57-4) and seconds_pos<34*(59-2) : gcopy 104,0,seconds_pos-60*34,34,34*60-seconds_pos+60*34
; 時間を示す枠
pos 0,0 : gcopy 102,0,0,320,240
pos 34,34*3 : gcopy 105,0,0,34/2,34 ; 「:」
pos 34*5/2,34*3 : gcopy 105,0,0,34/2,34 ; 「:」
gosub *player
redraw
await 50
goto *main_e
}
*player
stick key
if key&512 {
gsel 200,0
gmode 0,ginfo(12),ginfo(13)
pos 0,0 : gcopy 0,0,0,ginfo(12),ginfo(13)
gsel 0,1
goto *settings
}
return
*settings
if SettingWindow=0 {
objmode 2 : font msgothic,12
objsize 119,24 : pos 0,22 : chkbox "エコノミーモード",mode
objsize 157,24 : pos 0,48 : chkbox "スムーズに数字を動かす",smooth
objsize 157,24 : pos 0,74 : chkbox "切れ線を入れる",separate
} else {
gsel 100,0
if widthflag=1 : width ,,MouseXPosition-mxp,MouseYPosition-myp : widthflag=0
gsel 100,2
}
objprm 0,mode
objprm 1,smooth
objprm 2,separate
*set
gsel 0,0
redraw 0
gmode 0,ginfo(12),ginfo(13)
pos 0,0 : gcopy 200,0,0,ginfo(12),ginfo(13)
color
gmode 3,ginfo(12),ginfo(13),127
grect ginfo(12)/2,ginfo(13)/2,0,ginfo(12),ginfo(13)
if SettingWindow=0 {
font msgothic,20 : color 255,255,255 : pos 0,0 : mes "簡易設定"
} else {
font msgothic,20 : color 255,255,255 : pos ginfo(12)/2-45,ginfo(13)/2-10 : mes "設定中..."
gsel 100,0
}
//
MouseXPosition=ginfo(0)
MouseYPosition=ginfo(1)
if mode=1 : objenable 1,0 : objprm 1,0 : else : objenable 1,1
if cmode=1 and mode=0 : objprm 1,1
stick key
if key&512 {
if SettingWindow=0 : clrobj : else : gsel 100,-1 : gsel 0,1
goto *start
}
if key&64 {
if SettingWindow=0 : gsel 0,0 : clrobj : else : gsel 100,-1 : gsel 0,1
SettingWindow=(SettingWindow+1)\2
goto *settings
}
cmode=mode
//
stick skey,256
if (skey&256)=256 : keywait+ : else : keywait=0
if (cskey&256)=256 {
if SettingWindow=0 and ginfo(2)=0 {
if abs(MouseXPositionCopy-MouseXPosition)>20 or abs(MouseYPositionCopy-MouseYPosition)>20 {
font msgothic,20 : color ,,255 : pos 0,0 : mes "■"
if (skey&256)=0 {
gsel 0,0 : clrobj
SettingWindow=1
cskey=0
mxp=mousex
myp=mousey
widthflag=1
goto *settings
}
}
}
if SettingWindow=1 and ginfo(2)=100 {
if MouseXPosition<=ginfo(4) or MouseYPosition<=ginfo(5) or MouseXPosition>=ginfo(6) or MouseYPosition>=ginfo(7) {
gsel 0,0
if MouseXPosition>ginfo(4) and MouseYPosition>ginfo(5) and MouseXPosition<ginfo(6) and MouseYPosition<ginfo(7) {
font msgothic,20 : color 255,255 : pos 0,0 : mes "■"
if (skey&256)=0 {
gsel 100,-1 : gsel 0,1
SettingWindow=0
cskey=0
goto *settings
}
}
gsel 100,0
}
}
}
if keywait=1 : MouseXPositionCopy=MouseXPosition : MouseYPositionCopy=MouseYPosition
cskey=skey
//
gsel 0,0
redraw
if SettingWindow=1 : gsel 100,0
await 50
goto *set
*SettingWindowClose
if ginfo(2) = 0 : SettingDataSave "SaveDataFile" : end
if ginfo(2) = 100 : gsel 100,-1 : gsel 0,1 : goto *start
*error
dialog "エラー ["+err+"] が発生しました。\n報告お願いします。",1,"エラー"
end
もう一度書きますが、使うときはコメントとかください。そして、これはむか~しに作ったものなのでバグがあるかもしれません。