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

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

本文简介:选择自 bugs1984 的 blog

    map_width = (max_col_index + 1) * map_scale
    map_height = (max_row_index + 1) * map_scale
    picdisplay.cls
    picdisplay.width = map_width + 2
    picdisplay.height = map_height + 2
    picdisplay.line (0, 0)-step(map_width, map_height), map_empty_color, bf
       
    foodcount_atonetime = 2 '地图上同时存在的 食物数量
    bombcount_atonetime = 1 '地图上同时存在的 炸弹数量
   
    eatcountpershowprize = 5 '设置 蛇每吃进多少物品(包括食物和炸弹,奖品不计)才显示一次奖品
   
    curlevel = hscrlevel.value
    addscoreperfood = curlevel '每吃进一个 食物,所增加的分数=当前的级别值
    addscoreperbomb = -curlevel * 2 '每吃进一个 炸弹,所扣掉的分数
       
    p1.score = abs(addscoreperbomb) + 1 '玩家的初始分数='每吃进一个 炸弹,所扣掉的分数+1
    p1.food = 0
    p1.bomb = 0
    prizeremain = 0
    p1.blngameover = false
    lblscore.caption = p1.score
    lblfoodcount.caption = p1.food
    lblbombcount.caption = p1.bomb
   
    '初始化p1蛇身
    redim snake_p1(start_snake_length)
    for i = 0 to ubound(snake_p1)
        '设定蛇身各段的起始位置
        snake_p1(i).x = max_col_index - ubound(snake_p1) + i
        snake_p1(i).y = max_row_index
        '初始化移动方向
        p1.x_way = -1
        p1.y_way = 0
        mapproperty(snake_p1(i).x, snake_p1(i).y) = map_snake
        picdisplay.line (snake_p1(i).x * map_scale, snake_p1(i).y * map_scale)-step(map_scale, map_scale), body_color, bf
    next
    '使用蛇头颜色 重新绘画蛇头
    picdisplay.line (snake_p1(0).x * map_scale, snake_p1(0).y * map_scale)-step(map_scale, map_scale), head_color, bf
   
   
    '放置食物
    for i = 1 to foodcount_atonetime
        call addfood
    next
   
    '放置炸弹
    for i = 1 to bombcount_atonetime
        call addbomb
    next
   
    lblpause.visible = false
    lblscore.caption = p1.score
    lblfoodcount.caption = p1.food
    lblbombcount.caption = p1.bomb
   
    p1.blngameover = false
    hscrlevel.enabled = false '游戏进行期间不能改变级别
    tmrmove.enabled = true
end sub

'显示得分榜
private sub cmdshowscorelist_click()
    if blnpause = false then call form_keydown(key_pause, 0) '如果游戏正在进行,则发送“暂停”按键事件,暂停游戏
    frmscorelist.show
   
end sub

private sub form_keydown(keycode as integer, shift as integer)
   
    if p1.blngameover or blnstartgame = false or blnonkeyevents = false then exit sub '以下情况(游戏结束、游戏还没有开始、禁用击键事件)不接收按键操作。
   
    '按“numpad 5”键--暂停/继续
    if keycode = key_pause then
        blnpause = not blnpause
        lblpause.visible = blnpause
        tmrmove.enabled = not blnpause
        exit sub
    end if
   
    if blnpause then exit sub '在暂停状态下不接受“esc”外的其它按键
   
    select case keycode
        case key_lfup
            blnonkeyevents = false
            if p1.x_way <> 0 then
                p1.x_way = 0
                p1.y_way = -1
            elseif p1.y_way <> 0 then
                p1.x_way = -1

本文关键:游戏 贪吃蛇 PictureBox
 

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

go top