VB 贪吃蛇 单人版游戏 (原作)[8]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bugs1984 的 blog

    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

本文关键:游戏 贪吃蛇 PictureBox
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top