HSP | むか~し作り途中であきらめたデジタル時計 (その2)

HSP | むか~し作り途中であきらめたデジタル時計

入りきらないので分割します。→ その1
むか~しに作ったものなので最近公開しているものよりクソだとは思いますが…一応公開。
これはマジで、無断で使用しないでください。
使いたい場合は必ずコメントなどで知らせてから改造などしてください。かなり苦労してここまで作ったんで。(今の私が作れば苦労しないかもしれませんが…それでもコメントぐらいください。)

; 時間を示す枠
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

もう一度書きますが、使うときはコメントとかください。そして、これはむか~しに作ったものなのでバグがあるかもしれません。