如何用Excel做一个战斗模拟器(三)战斗过程模拟

如何用Excel做一个战斗模拟器(一)升级经验表
如何用Excel做一个战斗模拟器(二)属性表

定义战斗子过程

在VBE中定义一个战斗子过程,每次战斗开始就调用这个子过程。战斗子过程应包含以下内容:

  • 接收战斗双方的各类属性,如等级、血量、攻击、防御、暴击、闪避;
  • 模拟并输出战斗过程,如人物攻击对怪物造成N点伤害;怪物攻击未命中等;
  • 输出战斗结果,如怪物当前血量0,玩家胜利

明确了需求后,我们就可以开始代码的编写,首先定义子过程,这个子过程是需要参数的。rl代表玩家等级,ml代表怪物等级。因为我们还希望这个模拟器能模拟1V多的战斗以验算我们设定的战斗强度是否成立,所以我们还需要一个num参数传递怪物的数量。具体代码如下

//定义一个战斗的子过程
Sub Fight(rl As Integer, ml As Integer, num As Integer)
……
……
End Sub

接下来战斗过程的代码均书写在这个战斗子过程里

定位战斗双方基础属性

根据rl、ml两个参数,在“人物属性表”与“怪物属性表”中查找战斗双方的属性并定义相关变量用于接收。

'定义一个战斗的子过程
Sub Fight(rl As Integer, ml As Integer, num As Integer)
'定义变量接收人物属性
Dim rolesheet As Worksheet, rhp As Long, ratt As Long, rdef As Long, rblock As Long, rmiss As Long

'定位到人物属性表
Set rolesheet = Worksheets("人物属性表")

'用for循环找到人物属性表中对应等级的人物属性
Dim i As Integer
i = 1

Do While rolesheet.Cells(i, 1) <> ""
    
    '找到玩家等级,开始赋值
    If rolesheet.Cells(i, 1) = rl Then
    
        rhp = rolesheet.Cells(i, 2)
        ratt = rolesheet.Cells(i, 3)
        rdef = rolesheet.Cells(i, 4)
        '暴击属性
        rblock = rolesheet.Cells(i, 5)
        '闪避属性
        rmiss = rolesheet.Cells(i, 6)
        '找到了就立刻跳出循环              
        Exit Do
        
    Else
        
        '若不是玩家等级,继续向下查找
        i = i + 1
        
    End If
    
Loop

'重置变量i以供下一次循环
i = 1

'定义变量接收怪物属性
Dim msheet As Worksheet, mhp As Long, matt As Long, mdef As Long, mblock As Long, mmiss As Long, mallhp As Long

'定位到怪物属性表
Set msheet = Worksheets("怪物属性表")

'用For循环找到怪物属性表中对应等级的怪物属性
Do While msheet.Cells(i, 1) <> ""
    
    '找到怪物等级,开始赋值
    If msheet.Cells(i, 1) = ml Then
    
        mhp = msheet.Cells(i, 2)
        matt = msheet.Cells(i, 3)
        mdef = msheet.Cells(i, 4)
        '暴击属性
        mblock = msheet.Cells(i, 5)
        '闪避属性
        mmiss = msheet.Cells(i, 6)
        
        'MsgBox "怪物的HP为" & mhp
        
        Exit Do
        
    Else
        
        '若不是怪物家等级,继续向下查找
        i = i + 1
        
    End If
    
Loop
End Sub

利用基础属性与战斗公式进行计算

利用双方的基础属性我们可以得到玩家与怪物的伤害、暴击率、闪避率。而我们定义mallhp怪物总血量=单只怪物血量*怪物数量

'定义变量接收玩家与怪物的伤害,暴击率与闪避率
Dim rdam As Long, mdam As Long, rBloc
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值