• 中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏


    在《愿神》的提瓦特大陆上,每一位冒险者都拥有自己的独特力量——“神之眼”,他们借助元素之力探索广袤的世界,解决谜题,战胜敌人。而在提瓦特的科技树中,存在着一项名为“协同程序”的高级秘术,它使冒险者能够以一种独特的方式调度和管理自己的行动序列,就如同操控着多位英勇的元素使者,共同完成复杂的任务。

    协同程序:元素使者的并肩作战

    协同程序,犹如一群元素使者,各自携带独特的元素能量(堆栈)、战术手册(局部变量)以及任务指引(指令指针)。虽然他们各自独立行动,但与同阵营的其他使者共享珍贵的战略情报(全局变量)和其他关键资源。这种作战方式赋予了冒险者极高的战术灵活性,但也需要他们具备高超的策略规划能力。

    元素使者与协同程序:并肩作战与交替出击

    在提瓦特的战场上,元素使者之间的协作与协同程序的运作有异曲同工之妙。当众多元素使者并肩作战时,他们能同时施展各自的元素技艺,形成壮观的元素共鸣;而协同程序中的元素使者则如同执行精密编排的舞蹈,按照预定的节奏交替释放力量,只有在主动“隐匿”后,才会让位于下一位待命的使者。

    提瓦特秘技:操控协同程序

    为了在《愿神》中施展协同程序的力量,冒险者需要掌握以下几项核心秘技:

    coroutine.create():通过古老的仪式,召唤一名新的元素使者,注入其灵魂的是一套详尽的战斗指令(函数)。当与“唤灵法阵”(`resume`)结合使用时,使者便会被激活,开始执行任务。

    coroutine.resume():启动唤灵法阵,唤醒沉睡的元素使者,使其重新投入战斗。

    coroutine.yield():元素使者主动触发“隐匿术”,暂时撤出战场,待到再次被唤灵法阵召回时,继续未完成的任务。

    coroutine.status():通过占卜石板(`status`)洞察元素使者的当前状况,可能的状态包括“消亡”(dead)、“潜伏”(suspend)或“激战”(running)。

    coroutine.wrap():与`create`仪式相似,召唤元素使者并赋予其即刻响应召唤的能力,只需轻轻一触,使者立即响应召唤。

    coroutine.running():借助神秘罗盘(`running`),揭示当前活跃在战场上的元素使者的确切标识(线程号)。

    实战演练:协同程序秘术演练

    以下是一段在提瓦特大陆上演绎协同程序秘术的实战剧本:

    1. -- 元素使者登场
    2. 局部 co = 协程.创建(函数(i)
    3. 输出("元素使者", i, "降临战场")
    4. 结束)
    5. -- 唤醒元素使者
    6. 协程.恢复(co, 1)
    7. -- 探查使者状态
    8. 输出("元素使者状态:", 协程.状态(co))
    9. -- 元素使者以新仪式降临
    10. 局部 co = 协程.程包(函数(i)
    11. 输出("元素使者", i, "以崭新姿态现世")
    12. 结束)
    13. -- 施展新仪式
    14. co(1)
    15. -- 元素使者历练之旅
    16. 局部 co2 = 协程.创建(函数()
    17. 因为 i = 1, 10
    18. 输出("元素使者历练", i)
    19. 如果 i == 3
    20. 输出("元素使者状态:", 协程.状态(co2))
    21. 输出("元素使者标识:", 协程.程名())
    22. 结束
    23. 协程.挂起()
    24. 结束
    25. 结束)
    26. 协程.恢复(co2) -- 历练1
    27. 协程.恢复(co2) -- 历练2
    28. 协程.恢复(co2) -- 历练3
    29. 输出("元素使者状态:", 协程.状态(co2))
    30. 输出("元素使者标识:", 协程.程名())

    协同程序元素使者的历练历程

    执行这段剧本后,你将见证如下壮丽场景:

    元素使者        1       降临战场
    元素使者状态:   废弃dead
    元素使者        1       以崭新姿态现世
    元素使者历练    1
    元素使者历练    2
    元素使者历练    3
    元素使者状态:   废弃dead
    元素使者标识:   thread: 0000000000f66028        true

    【协同程序的深层奥秘】

    协同程序的核心在于“唤灵法阵”(`resume`)与“隐匿术”(`yield`)的默契配合。唤灵法阵如同唤醒沉睡使者的咒语,令其继续未竟的使命;而隐匿术则如同使者主动退场,静候下一次召唤。这种机制使得元素使者能在关键时刻暂停与恢复战斗,为应对提瓦特大陆上复杂多变的挑战提供了战术上的无限可能。

    【元素采集-炼金:协同程序的实战应用】

    在《愿神》中,冒险者可以利用协同程序解决现实世界中的“生产者-消费者”问题,如元素采集与炼金过程。想象一位持续提炼元素精华的炼金大师(生产者)与一位负责收集精华的冒险家(消费者),他们的合作过程如下:

    1. 局部 新炼金师
    2. 函数 炼金师()
    3. 局部 i = 0
    4. 当 真 做
    5. i = i + 1
    6. 将元素精华交给冒险家(i) -- 将元素精华交给冒险家
    7. 结束
    8. 结束
    9. 函数 冒险家()
    10. 当 真 做
    11. 局部 i = 从炼金师那里接收元素精华() -- 从炼金师那里接收元素精华
    12. 输出("冒险家收到元素精华", i)
    13. 结束
    14. 结束
    15. 函数 从炼金师那里接收元素精华()
    16. 局部 状态, 元素精华 = 协程.恢复(新炼金师)
    17. 返回 元素精华
    18. 结束
    19. 函数 将元素精华交给冒险家(x)
    20. 协程.挂起(x) -- 交付元素精华x后,炼金师稍事休息
    21. 结束
    22. -- 启动元素交换仪式
    23. 新炼金师 = 协程.创建(炼金师)
    24. 冒险家()
    25. --记得按Ctrl+C退出程序

    执行这段剧本,你会发现冒险家不断地从炼金大师那里获取宝贵的元素精华,他们的合作如同精心编排的舞蹈,展现了协同程序在《愿神》世界中解决特定任务时的无尽潜力。

    至此,你已领略了《愿神》中“协同程序”这一高级秘术的神奇魅力。深入探索并熟练运用,你将能够指挥元素使者,从容应对提瓦特大陆上的一切挑战。

  • 相关阅读:
    QT总结汇总
    vscode windows mingw配置
    react的different算法
    面板平滑转换回归(PSTR)分析案例实现
    2024年人文艺术与媒体传播国际学术会议(ICHAMC 2024)
    【英语:基础进阶_听口实战运用】D6.短篇文章训练
    leetcode 1732. 找到最高海拔
    uni-app input设置为disable,不能点击
    STM32CubeMX和Keil uVision5软件
    如何实现搜索引擎中的拼写纠错功能——思路
  • 原文地址:https://blog.csdn.net/funsion/article/details/137882875