魔塔之拯救白娘子~我的第一个VB6+DX8做的小游戏源码~8地图编辑器-处理流程

魔塔之拯救白娘子 完整工程下载地址:
《魔塔之拯救白娘子》处理流程:
①在主游戏窗口里添加一个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#里。这也可以当成地图编辑器地图的初始化来看待。

猜你喜欢

转载自blog.csdn.net/gosub60/article/details/112847408