魔塔之拯救白娘子 完整工程下载地址:
《魔塔之拯救白娘子》处理流程:
①在主游戏窗口里添加一个timer控件,名称为:timerDraw 作用:根据running状态绘制不同的背景
Enabled:false 当游戏初始化完毕后开启,进行不同状态的背景绘制,是整个程序的中控
Interval:10 时间为10毫秒,数字越少触发越多。这个数值影响FPS
②timerDraw 对地图编辑器的处理流程:
PaintScreen 0 '以黑色擦除屏幕
RenderBegin '开始渲染
BackPic.DrawGraph 0, 0 '背景绘制
Select Case Running
```Case 8 '地图编辑器
If 地图层号 = -1 Then
地图层号 = 1
读取地图数据 (地图层号)
写临时地图数据 (0)
End If
地图编辑器_初始化
背景_动态Draw
With 储存按钮的图形数组(16) '返回游戏主界面
'.SetDisplayRect 0, 0, 128, 64
.SetScale 0.3, 0.3
.Cell = 1
.DrawGraph 450, 430
End With
'对鼠标进行判断
地图编辑界面鼠标点击判断
地图编辑器界面_图形说明
地图编辑器界面_选中的图片弹跳显示
'清空地图处理
If 地图编辑器界面按钮按下标志_清空地图 = True Then
地图层号 = -1: 地图编辑器界面按钮按下标志_清空地图 = False
End If
'保存地图处理
If 地图编辑器界面按钮按下标志_保存地图 = True And 地图编辑器界面_临时地图标志 = True Then
地图编辑器界面按钮按下标志_保存地图 = False
' If 地图编辑器界面_修正地图 = False Then
地图最大层号 = 地图最大层号 + 1
' End If
写地图数据_保存
地图编辑器界面_临时地图标志 = False
地图编辑器界面_修正地图 = False
DrawText "保存" & 地图最大层号 & "#地图成功!", 150, 500, xgGREEN
Else
地图编辑器界面按钮按下标志_保存地图 = False
End If
'载入地图处理
If 地图编辑器界面按钮按下标志_载入地图 = True Then
地图编辑器界面_载入地图处理
End If
DrawText "地图总数:" & 地图最大层号, 100, 10, xgRED
'
DrawText "当前正在编辑的地图编号:" & 当前正在编辑的地图编号, 100, 420, xgRED
End Select
DrawText "FPS:" & GetFPS, 10, 10, xgRED
RenderEnd '结束渲染
LimitFPS 200 '限制FPS
下边是流程解释:
```vbnet
If 地图层号 = -1 Then
地图层号 = 1
读取地图数据 (地图层号)
写临时地图数据 (0)
End If
①地图层号:这个变量用来储存当前的地图编号,在游戏状态就是角色所在的层号,在地图编辑器界面就是地图编辑的编号。所以要注意这点,一个变量2种用途。
这段代码的作用:在编辑器状态,如果你想清空地图所有内容,或者第一次开始编辑地图,就将地图层号设置为-1。那么这段代码就将 地图层号 设置为1,也就是初始化的0#地图(注意:编号从1号开始)
②读取地图数据(地图层号):这个子程序:根据地图层号读取map.ini(地图数据保存在这个文件里)里的地图数据。代码如下:
Sub 读取地图数据(地图层号)
Dim m() As String
Dim k As Integer
Dim j As Integer
''读地图总数
iniFileName = "map"
地图最大层号 = GetIniS("地图", "总数", 地图最大层号)
If 地图最大层号 < 1 Or 地图最大层号 > 99 Then MsgBox "地图的配置文件有错,将恢复到初始状态!": 写地图数据_恢复数据: 地图层号 = 2:
地图最大层号 = GetIniS("地图", "总数", 地图最大层号)
'读地图数据
For k = 0 To 12
地图数据(k) = GetIniS(地图层号 & "#", "地图数据(" & k & ")", 地图数据(k))
'Debug.Print 地图数据(k)
Next k
End Sub
地图数据(k):存放地图数据的一个数组。全局变量。
③写临时地图数据(0):作用:将当前的地图数据暂存到mapx.ini ,写入多少#就输入多少#。注意:这里的0#地图其实就是当前地图层号的副本。在游戏中就是当前人物所在层的副本。
Sub 写临时地图数据(临时值 As Integer) '地图编辑器时调用
Dim k As Integer
If 临时值 < 0 Or 临时值 > 99 Then Exit Sub 'MsgBox "写临时地图数据错误!":
iniFileName = "mapX"
For k = 0 To 12
SetIniS 临时值 & "#", k, 地图数据(k)
Next k
End Sub
总结:当第一次进入地图编辑器的时候或者使用清空地图按钮的时候,就将 地图层号置为-1。然后timerDraw 子程序 将地图层号置为1,并读取1#地图,并将(map.ini)1#地图写入临时地图(mapX.ini)0#里。这也可以当成地图编辑器地图的初始化来看待。