51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1527|回复: 1
打印 上一主题 下一主题

lua 与游戏测试 (三)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-3-9 13:15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文周日写的,但周日太冷了,就没上传,写这个文章时,我一直在思考,最好还是用先读懂lua的
结构,当然我发现自己的水平也没办法由浅入深,lua在我的测试里,目前阶段还是经常是用于调式的。

回归正题
布尔值有两种:true 和 false。在Lua中,只有false和nil才被计算为false,
默认的都是true
*在lua里需要做2个或者2个以内判断的一般都用false,比如是否条件:
  1. local obj =
  2. {
  3. m_isRequestPassStatus = false,    --是否服务器申请通关信息
  4. m_isGetPassStatus = false,
  5.     …  …
  6. }
  7. 其中一段解释类比 RequestPassStatus
  8. function BattleManager:SetIsRequestPassStatus(isrequest)
  9.     if "boolean" ~= type(isrequest) then
  10.         CommonHelperFunc.MyAssert(false, "BattleManager:SetIsRequestPassStatus argu error")
  11.         return
  12.     end
  13.     self.m_isRequestPassStatus = isrequest
  14. end
复制代码
可以理解了吗?结构上和其他语言差不多, 大于2个及以上的其他条件类的比如:进入副本条件限制
等,就不能用这种方式,范例如下:
可以尝试去读以下代码范例片段:
  1. -- 进入战斗时的条件限制,如下:
  2. local instance
  3. EnterFight_OK =0 可以战斗
  4. EnterFight_PlayerLevelNotEnough = 1 -- 玩家等级不足
  5. EnterFight_EnergyNotEnough = 2  -- 体力不足
  6. EnterFight_CostOutRange = 3     -- 组队Cost超出上限
  7. EnterFight_HaveNoTime = 4   -- 关卡次数限制

  8. function GetSingleton()
  9.     if instance == nil then
  10.         return BattleManager:New() –如果instance等于nil,则创建对象BattleManager
  11.     end
  12.     return instance
  13. end

  14. function BattleManager:New()  --如果assert的前面instance ~= nil为非空,则使用instance
  15.     if instance ~= nil then
  16.         CommonHelperFunc.MyAssert( false )
  17.         return instance
  18.     end

  19. --战斗进入条件
  20. function BattleManager:EnterFightCheck()  --定义之前声明的BattleManager
  21.     local gameMainPlayer = GameMainPlayer.GetSingleton()
  22.     local stageManager = StageManager.GetSingleton()
  23.     local stage = stageManager:GetStage(self.m_curStageID) --副本阶段

  24.     if gameMainPlayer:GetLevel() < stage:GetDef().needlevel then
  25.         return EnterFight_PlayerLevelNotEnough  --玩家等级
  26.     end
  27.     if gameMainPlayer:GetEnergy() < stage:GetDef().need_energy * self:GetFightTime() then
  28.         return EnterFight_EnergyNotEnough  --体力
  29.     end

  30.     if stage:GetPassTimes() >= stage:GetDef().time then
  31.         return EnterFight_HaveNoTime –关卡次数
  32.     end

  33.     local teamManager = gameMainPlayer:GetTeamData()
  34.     if teamManager:GetTeamCost(teamManager:GetCurSelectedTeamIndex()
  35. ) > gameMainPlayer:GetCost() then
  36.         return EnterFight_CostOutRange --组队Cost超出上限
  37.     end
  38.     … …
  39. return EnterFight_OK  --就是可以战斗
  40. end
复制代码
以上一段段屏蔽就可以逐渐检查测试.一段满足条件的战斗的例子.lua语言先需要去读懂他
和了解结构才可以用于定位问题去辅助测试。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-21 22:03 , Processed in 0.061433 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表