课时 16 · 阶段项目:装备系统模块
课时 16 · 阶段项目:装备系统模块(Lua 进阶):综合运用进阶知识完成模块级项目。示例跑在 996 新三端引擎里,接口按本地官方文档逐个核对。
本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。
本课目标
- 综合运用进阶知识完成模块级项目。
知识讲解
项目:装备类(属性加成)+ 背包联动 + 装备强化。要求:装备对象用 OOP 建模,含基础属性与强化等级;强化受成功率影响,失败降级;装备属性随强化等级动态计算;背包与装备之间可穿戴、卸下联动。本项目综合模块设计、面向对象、元表、错误处理与测试,是进入引擎开发前最后一次纯 Lua 训练。
示例:装备类骨架
local Equip = {}
Equip.__index = Equip
function Equip.new(name, baseAtk)
local self = setmetatable({}, Equip)
self.name = name
self.baseAtk = baseAtk
self.level = 0
return self
end
function Equip:attack()
return self.baseAtk + self.level * 5 -- 每级 +5
end
function Equip:upgrade()
if math.random(1, 100) <= 80 then
self.level = self.level + 1
return true
end
if self.level > 0 then self.level = self.level - 1 end
return false
end
local sword = Equip.new('木剑', 10)
for i = 1, 5 do sword:upgrade() end
print(sword.name, sword.level, sword:attack())
练习任务
- 完成装备系统完整版:装备强化成功后属性实时变化;提供背包列表与穿戴/卸下接口;强化失败与背包已满等边界情况输出明确提示;最后写一段测试代码覆盖成功与失败分支。
参考:验收要点
- Equip 模块以 return M 导出,new/attack/upgrade 为公开接口;
- 穿戴逻辑把装备放入 player.equip,卸下放回背包并检测背包容量;
- upgrade 内部用 pcall 或数值校验防止非法输入;
- 测试代码分别验证强化成功(属性增加)与失败(降级)两条路径。
知识讲解
本章课时内容依据:课程大纲第二阶段(课时 9—16)教学目标与作业设计,逐课时沿用,未作变动。
本篇依据
- 《996 新三端 Lua 开发教学技术手册》课时 16
参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。