魔塔之拯救白娘子 完整工程下载地址:
《魔塔之拯救白娘子》流程分析:
初始化→根据 主角所在的楼层判断主角的位置并绘制主角→显示主角的基本信息(生命值、体力值、金币、经验值等等)→游戏界面鼠标点击判断→男主角移动及方向处理→自动寻路处理→ 游戏时主角显示处理→循环判断直到游戏结束←
①首先判断玩家是不是赢了游戏,如果赢了游戏就返回到最开始的选择游戏界面。源代码如下:
If Winner = True And 对话窗口显示标志 = False Then
Running = 9: 读档标志 = False: 判断running状态_初始化: BackPic.LoadGraph "image\魔塔背景\魔塔背景1.jpg", xgBLACK
End If
②游戏中读取地图层次判断:根据地图层号判断角色所处位置。
Sub 游戏中读取地图层次判断()
On Error Resume Next
Dim m() As String
'新地图处理
If 游戏进度.新地图(地图层号) = True Then
'①新地图处理的时候,读原始地图数据,
读取地图数据 (地图层号)
'将主角所在位置设置为每一层的下楼位置
修改主角位置 主角地图上每层初始坐标.下楼图形坐标X(地图层号), 主角地图上每层初始坐标.下楼图形坐标Y(地图层号), 14
'并将地图镜像发送到临时地图数据0#
' 写临时地图数据 (0)
'③将新地图处理标志设为False,同时将地图当前层号设为本层
游戏进度.新地图(地图层号) = False
游戏进度.地图当前层号 = 地图层号
End If
'上楼处理
'上楼处理'2 楼上3楼的话,就要从10,6 显示卡通
If 游戏进度.上楼处理标志(地图层号) = True Then
读临时地图数据 (地图层号)
'清除地图上多余的主角
'将主角的位置设置于下楼的楼图形处
'关掉上楼梯地方的角色显示
'开启下楼梯地方的角色处理
修改主角位置 主角地图上每层初始坐标.上楼图形坐标X(地图层号), 主角地图上每层初始坐标.上楼图形坐标Y(地图层号), 1
修改主角位置 主角地图上每层初始坐标.下楼图形坐标X(地图层号), 主角地图上每层初始坐标.下楼图形坐标Y(地图层号), 14
游戏进度.上楼处理标志(地图层号) = False
游戏进度.地图当前层号 = 地图层号
End If
'下楼处理
' ①根据层数,读取临时地图数据,此数据在上楼时已经保存过
If 游戏进度.下楼处理标志(地图层号) = True Then
读临时地图数据 (地图层号)
'② '将主角的位置定位于上楼的位置
'清除地图上多余的主角
'下楼的话,将主角放在上楼的楼图形,同时将下楼的楼图形处主角的涂掉
修改主角位置 主角地图上每层初始坐标.下楼图形坐标X(地图层号), 主角地图上每层初始坐标.下楼图形坐标Y(地图层号), 1
修改主角位置 主角地图上每层初始坐标.上楼图形坐标X(地图层号), 主角地图上每层初始坐标.上楼图形坐标Y(地图层号), 14
'
游戏进度.地图当前层号 = 地图层号
游戏进度.下楼处理标志(地图层号) = False
End If
Dim k As Integer
'读档处理
If 游戏进度.读玩家档 = True Then
读临时地图数据 (地图层号)
' 写临时地图数据 (地图层号)
游戏进度.地图当前层号 = 地图层号
游戏进度.读玩家档 = False
End If
End Sub
用到的修改主角位置子程序:
Sub 修改主角位置(要修改的X坐标 As Integer, 要修改的Y坐标 As Integer, 要修改的内容 As Integer)
On Error Resume Next
Dim m() As String
男主角移动.x = 地图XY坐标.mapX坐标(要修改的X坐标)
男主角移动.y = 地图XY坐标.mapY坐标(要修改的Y坐标)
m = Split(地图数据(男主角移动.x / 32), ",")
m(男主角移动.y / 32) = 要修改的内容
地图数据(男主角移动.x / 32) = m(0) & "," & m(1) & "," & m(2) & "," & m(3) & "," & m(4) & "," & m(5) & "," & m(6) & "," & m(7) & "," & m(8) & "," & m(9) & "," & m(10) & "," & m(11) & "," & m(12)
写临时地图数据 (0)
End Sub
③显示主角的基本信息(生命值、体力值、金币、经验值等等):见前一节源码
④背景_动态Draw:绘制所有的背景以及卡通,并让卡通动起来。源码见 完整的内容。