[浮生梦] 第十期 第三课 循环与表的初体验

发表于:3 天前 45

课程入口

课程内容总结

本节课主要围绕Lua编程中的循环结构、表(table)操作和变量封装展开,分为以下几个核心部分:


1. 循环结构

  • ​**for循环**​

    • 数字型循环​:for i=start, end, step do ... end

      • 用于固定次数的迭代(如遍历1~100)。
      • 示例:打印1~10的平方、计算1~100的和。
    • 特性​:基于栈实现,效率高于while循环,循环变量(如i)作用域仅限于循环体内。

  • ​**while循环**​

    • 结构​:while condition do ... end

      • 适用于条件满足时持续执行的场景(如事件监听、AI行为树)。
      • 示例:倒序打印10~1,当数值为5时触发提示。
  • ​**repeat循环**​

    • 结构​:repeat ... until condition

      • 先执行后判断,适用于至少执行一次的场景(如用户输入验证)。
      • 示例:随机数生成直到满足条件退出。
  • 循环控制

    • break:立即终止当前循环。
    • 应用场景:在循环中满足特定条件时提前退出(如查找到目标值后终止遍历)。

2. 表(Table)操作

  • 表的定义与初始化

    • 示例:t = {1, "hello", true, function() end},可存储任意类型数据。
    • 键值对​:显式指定键(如t = {[1]=123, ["name"]="Alice"})。
  • 表的遍历

    • 数字索引遍历​:for i=1, #t do print(t[i]) end#t获取数组部分长度)。
    • 泛型遍历​:后续课程讲解(如pairs迭代器)。
  • 注意点

    • 避免重复键导致覆盖。
    • 表是Lua的核心数据结构,广泛用于游戏开发(如配置表、对象属性管理)。

3. 变量封装

  • 系统变量与自定义变量

    • 封装目标:将原生命令(如setVar/getVar)转换为易用的自定义函数。

    • 示例:

      function GetPlayerName(actor)
          return GetBaseInfo(actor, 1)  -- 封装获取角色名的逻辑
      end
      
    • 意义​:提升代码可读性,为后续面向对象编程做准备。


4. 作业要求

  1. 封装变量命令

    • 实现SetVar/GetVar函数,支持系统变量和自定义变量的存取。
  2. 九九乘法表

    • 使用循环打印九九乘法表,输出到游戏日志(如print)。
  3. 扩展练习​

    • 封装常用游戏命令(如坐标获取、职业判断等)。

关键知识点

  • 性能​:for循环优于while,因Lua虚拟机对数字循环有优化。
  • 作用域​:循环变量(如i)在循环结束后销毁,需注意外部访问问题。
  • 表的使用​:理解表的键值对结构是Lua编程的基础。
收藏
送赞
分享

发表回复

评论列表(1)

哇~同学你总结得好详细呀!看来这节课学得很认真呢!(*^▽^*) 循环和表可是Lua里超级重要的基础哦~让小妹给你补充几个小贴士吧!

关于循环呢,小妹最喜欢用for循环啦,特别是写九九乘法表作业的时候~比如这样:
  1. for i=1,9 do
  2.     for j=1,i do
  3.         print(i.."*"..j.."="..i*j)
  4.     end
  5. end
复制代码

至于变量封装,同学记得要把系统变量和自定义变量分开处理哦!比如:
  1. function SetVar(key, value, isSystem)
  2.     if isSystem then
  3.         setVar(key, value)
  4.     else
  5.         -- 自定义变量处理
  6.     end
  7. end
复制代码

表的使用要特别注意索引从1开始呢,和其他语言不一样~而且表可以嵌套使用,超级灵活的!

同学作业要加油哦!如果遇到问题随时来问小妹~相信你一定可以写出超棒的代码!٩(◕‿◕。)۶

ps:记得写循环的时候要注意终止条件,不要写成死循环啦~不然游戏会卡住的呢!
3 天前 回复