- 注册时间
- 2005-5-29
- 最后登录
- 2008-6-21
开发组
三心二意魔人
- 积分
- 2396
|
;虽然是出于帮cexo san解决问题的动机写的,但还是按一贯的学习心得格式加上了详细的注释,方便初学的朋友学习。
;这个计时问答的基本思路是:不是以btntime来计时而是以循环配合内部时钟来计时,btntime是用来解决btnwait之后程序会停下来等待点击这个问题的。
*define
game
*start
setwindow 40,380,26,4,22,22,0,2,20,0,0,#6666aa,10,360,630,470
bg white,10,1000
以下为心理测试,请在时限内凭第一反应选择一个选项:\
lsp 1,":s/22,22,0;#999999#ff6666第一个选项",260,200
lsp 2,":s/22,22,0;#999999#ff6666第二个选项",260,230
lsp 3,":s/22,22,0;#999999#ff6666第三个选项",260,260
lsp 4,":s/30,26,2;#999999计时器",60,105
lsp 0,":s/20,20,0;#999999剩余时间 秒",160,150
prnum 0,10,215,150,20,20,#dd4060
bar 0,10000,160,100,320,40,10000,#eeee88
bar 1,0,160,100,320,40,10000,#ee6688
print 10,100
spbtn 1,1
spbtn 2,2
spbtn 3,3
;----------****重点开始分割线****---------
resettimer
;resettimer使内部时钟归零,开始计时
;预定问题的时限是10秒,这个循环的次数,至少要大于100次,因为每次btntime时间为100毫秒,什么都不点的话要循环100次才能走满10秒.100以上的数字可以随意写,反正也不指望靠它结束循环.
;btntime时间为100毫秒的理由是……要使bar的变化看上去像是动画,每秒刷新十次以上是基本吧?呵呵,也只不过是个人爱好啦……
for %10=0 to 1000
mov %1,0
mov %2,0
*bw
;下面这几个变量倒来倒去是为了解决每次goto *bw时btntime重新开始计时的问题.
mov %1,%1+%2
btntime 100-%1
btnwait %0
getbtntimer %2
;getbtntimer是用来取得btnwait至点击经过的时间的命令,书写格式是:
;getbtntimer 数字变量
if %1>=100 goto *nx
;这句虽然看似废话,但不写的话就会出现某种类似bug的东西,唉……说不清楚(实际上我也不明白是怎么回事),大家可以把这句删了然后试试用鼠标狂点空白处……然后谁来告诉我到底发生了什么事……
if %0=0 goto *bw
if %0=-1 goto *bw
if %0=-2 goto *nx
if %0=3 goto *s3
if %0=2 goto *s2
if %0=1 goto *s1
*nx
;这个才是真正的计时器
gettimer %3
;取得从resettimer开始至此经过的时间,是ns里最精确的计时方法,书写格式为:
;gettimer 数字变量
bar 1,%3,160,100,320,40,10000,#ff6688
mov %4,10000-%3+900;这个+900只是为了让倒计时看上去比较符合人的心理期待,最后一瞬间看到0,要的这个效果。
prnum 0,%4/1000,215,150,20,20,#dd4060
print 1
if %3>=10000 goto *s4
next
;----------****重点结束分割线****---------
;不知为何我无法用barclear来清除bar……应该是和prnumclear同样的用法吧?明明prnumclear都很好使的啊……只好先这样凑活了……
*s1
csp -1
prnumclear
bar 0,0,160,100,320,40,10000,#ffff88
bar 1,0,160,100,320,40,10000,#ff6688
print 10,100
选择了第一项的您,是个性坦率容易相处的人。\
goto *end
*s2
csp -1
prnumclear
bar 0,0,160,100,320,40,10000,#ffff88
bar 1,0,160,100,320,40,10000,#ff6688
print 10,100
选择了第二项的您,是温和体贴会照顾别人的人。\
goto *end
*s3
csp -1
prnumclear
bar 0,0,160,100,320,40,10000,#ffff88
bar 1,0,160,100,320,40,10000,#ff6688
print 10,100
选择了第三项的您,是思维活跃讨人喜欢的人。\
goto *end
*s4
csp -1
prnumclear
bar 0,0,160,100,320,40,10000,#ffff88
bar 1,0,160,100,320,40,10000,#ff6688
print 10,100
时间到……@
什么都没选的您……应该是个……@反应迟钝的人。XD@
或者您在测试我的计时系统。XD\
goto *end
*end
……@……@……\
以上文字均为虚构,如有雷同纯属巧合。\
结束\
end
|
|