dim name as string '记录玩家名称
dim topten as boolean '判断得分是否进入前十名
dim ans as integer
filenum = freefile
set list = frmscorelist.lstscore '映射到列表框 frmscorelist.lstscore
do
if score >= val(list.list(pos)) then
topten = true
do '循环,设置玩家玩家名称
name = inputbox("你的得分是第 " & pos + 1 & "名" & vbcrlf & "请输入你的名称(不超过15个字符)", "进入前10名!")
if len(name) = 0 then
msgbox "你取消了 top 10 得分登记", vbinformation
exit sub
end if
if len(rtrim(name)) > 15 then
ans = msgbox("玩家名称的长度不能超过15个字符!" & vbcrlf & "你输入的 “" & name & "”" & "将自动改为 “" & left(name, 15) & "”" & "是否同意?", vbquestion or vbyesno, "输入玩家名称")
if ans = vbyes then name = left(name, 15)
end if
loop until len(rtrim(name)) <= 15 and len(rtrim(name)) > 0 '直到玩家名称的长度符合规定,才退出循环
end if
pos = pos + 1
loop until pos = 10 or topten = true
if topten = true then
list.additem score, pos - 1
frmscorelist.lstname.additem name, pos - 1
if list.listcount > 10 then list.removeitem list.listcount - 1
if frmscorelist.lstname.listcount > 10 then frmscorelist.lstname.removeitem frmscorelist.lstname.listcount - 1
call putrecord '刷新 记录文件的内容
end if
end sub
'往文件里写入 得分记录
private sub putrecord()
dim filenum as integer, i as integer
filenum = freefile
open app.path & record_file_name for random as #filenum len = len(record(0))
for i = 0 to 9
record(i).score = val(frmscorelist.lstscore.list(i))
record(i).name = frmscorelist.lstname.list(i)
put #filenum, , record(i)
next
close #filenum
end sub
'不断减少奖励的分数
private sub tmrprize_timer()
dim tempcolor as long
prizeremain = prizeremain - 1
if prizeremain = 0 then
call showprize(false) '当奖励的分数减少到零,就擦除奖品
exit sub
end if
tempcolor = int(rnd() * (full_color + 1)) '产生随机颜色
picdisplay.line (prizepos.x * map_scale, prizepos.y * map_scale)-step(map_scale, map_scale), tempcolor, bf '在地图上用 随机颜色绘画 奖品
lblprizeremain.forecolor = full_color - tempcolor '剩余的分数,用反色显示
lblprizeremain.caption = prizeremain '显示当前剩余的 奖励分数
end sub