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