当前位置: 首页 > news >正文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


-- 元素使者登场
局部 co = 协程.创建(函数(i)输出("元素使者", i, "降临战场")结束)-- 唤醒元素使者协程.恢复(co, 1)-- 探查使者状态输出("元素使者状态:", 协程.状态(co))-- 元素使者以新仪式降临局部 co = 协程.程包(函数(i)输出("元素使者", i, "以崭新姿态现世")结束)-- 施展新仪式co(1)-- 元素使者历练之旅局部 co2 = 协程.创建(函数()因为 i = 1, 10 做输出("元素使者历练", i)如果 i == 3 即输出("元素使者状态:", 协程.状态(co2))输出("元素使者标识:", 协程.程名())结束协程.挂起()结束结束)协程.恢复(co2) -- 历练1协程.恢复(co2) -- 历练2协程.恢复(co2) -- 历练3输出("元素使者状态:", 协程.状态(co2))输出("元素使者标识:", 协程.程名())

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

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

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

【协同程序的深层奥秘】

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

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

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

局部 新炼金师函数 炼金师()局部 i = 0当 真 做i = i + 1将元素精华交给冒险家(i) -- 将元素精华交给冒险家结束
结束函数 冒险家()当 真 做局部 i = 从炼金师那里接收元素精华() -- 从炼金师那里接收元素精华输出("冒险家收到元素精华", i)结束
结束函数 从炼金师那里接收元素精华()局部 状态, 元素精华 = 协程.恢复(新炼金师)返回 元素精华
结束函数 将元素精华交给冒险家(x)协程.挂起(x) -- 交付元素精华x后,炼金师稍事休息
结束-- 启动元素交换仪式
新炼金师 = 协程.创建(炼金师)
冒险家()--记得按Ctrl+C退出程序

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

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

相关文章:

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

在《愿神》的提瓦特大陆上,每一位冒险者都拥有自己的独特力量——“神之眼”,他们借助元素之力探索广袤的世界,解决谜题,战胜敌人。而在提瓦特的科技树中,存在着一项名为“协同程序”的高级秘术,它使冒险者…...

C++笔记之注册回调函数常见的5种情况对比

C++笔记之注册回调函数常见的5种情况对比 —— 2024-04-10 code review! 文章目录 C++笔记之注册回调函数常见的5种情况对比1.五种情况2.示例2.1. `RegisterCallback` 和 `Callback` 都是普通函数2.2. `RegisterCallback` 是成员函数,`Callback` 是普通函数2.3. `RegisterC…...

人工智能揭示矩阵乘法的新可能性

人工智能揭示矩阵乘法的新可能性 数学家酷爱漂亮的谜题。当你尝试找到最有效的方法时,即使像乘法矩阵(二维数字表)这样抽象的东西也会感觉像玩一场游戏。这有点像尝试用尽可能少的步骤解开魔方——具有挑战性,但也很诱人。除了魔方…...

实在智能携手长江新零售俱乐部:探秘实在Agent数字员工,开启零售品牌增长新篇章

近日,实在智能携手长江新零售俱乐部成功举办了“AIGC:数字员工助力零售品牌新增长”主题活动,成功吸引了二十余家企业中高层管理精英的踊跃参与。在此次活动中,与会者围绕零售业数字化转型的当前态势、面临的挑战及其重要性进行了…...

计算机科学与导论 第十七 十八章 计算理论,人工智能

文章预览: 计算理论17.1 引言17.2 简单语言17.3 图灵机邱奇 -图灵 论题 人工智能引言18.1.1 什么是人工智能18.1.2 智能体18.1.3 编程语言 18.2 知识的表示18.2.1 语义网18.2.2 框架18.2.3 谓词逻辑18.2.4 基于规则的系统 18.2 专家系统18.3 语言理解18.4 搜索18.5 …...

linux 设置定时任务---学习

1、设置定时任务 crontab -e 设置格式参考:【Linux】Linux crontab 命令定时任务设置_crontab 设置每天10:30执行-CSDN博客 测试过程: */1 * * * * /root/cronjob.sh 脚本内容: echo "hell0 cronjob" >> /root/test/hello.txt 实现…...

钡铼IOy系列模块深挖工业场景需求提供丰富多样的I/O解决方案

钡铼IOy系列模块以其灵活性和多样性,在工业场景中提供了丰富多样的I/O解决方案,满足了不同行业、不同应用场景的需求。以下是一些常见的工业场景需求及钡铼IOy系列模块提供的解决方案: 1. 工厂自动化 需求:工厂自动化需要对生产线…...

【刷题笔记】第三天

两道简单题 文章目录 [2923. 找到冠军 I](https://leetcode.cn/problems/find-champion-i/description/)[3095. 或值至少 K 的最短子数组 I](https://leetcode.cn/problems/shortest-subarray-with-or-at-least-k-i/description/) 2923. 找到冠军 I 方法1: 如果 i …...

开源模型应用落地-LangChain试炼-CPU调用QWen1.5(一)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 通过langchain框…...

STM32-模数转化器

ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换 为离散的数字信号的器件。 ADC相关参数说明: 分辨率: 分辨率以二进制(或十进制)数的位数来表示,一般有 8 位、10 位、12 位、16 位…...

算法刷题记录2

4.图 4.1.被围绕的区域 思路:图中只有与边界上联通的O才不算是被X包围。因此本题就是从边界上的O开始递归,找与边界O联通的O,并标记为#(代表已遍历),最后图中剩下的O就是:被X包围的O。图中所有…...

中国代工巨头旗下芯片公司遭网络攻击,千兆字节数据被泄露

近日,中国智能手机代工巨头闻泰科技旗下荷兰芯片制造商Nexperia发布声明,称其遭遇网络攻击,有未经授权的第三方访问了公司的 IT 服务器,目前已向相关部门报告了此次事件,并与网络安全专家合作开启调查。而据相关消息&a…...

【ARM 裸机】汇编 led 驱动之基本语法

我们要编写的是 ARM 汇编,编译使用的是 gcc 交叉编译器,所以要符合 GNU 语法。 1、汇编指令 汇编由一条条指令构成,ARM 不能直接访问存储器,比如 RAM 中的数据,I.MX6UL 中的寄存器就是 RAM 类型的,我们用…...

scala---基础核心知识(变量定义,数据类型,流程控制,方法定义,函数定义)

一、什么是scala Scala 是一种多范式的编程语言,其设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。 二、为什么要学习scala 1、优雅 2、速度快 3、能融合到hado…...

OSPF星型拓扑和MGRE全连

一,拓扑 二,要求 1,R6为ISP只能配置IP地址,R1-R5的环回为私有网段 2,R1/4/5为全连的MGRE结构,R1/2/3为星型的拓扑结构, 3,R1为中心站点所有私有网段可以互相通讯,私有网段…...

智能时代中的工业应用中前所未有的灵活桥接和I/O扩展功能解决方案MachXO2系列LCMXO2-1200HC-4TG100I FPGA可编程逻辑IC

lattice莱迪斯 MachXO2系列LCMXO2-1200HC-4TG100I超低密度FPGA现场可编程门阵列,适用于低成本的复杂系统控制和视频接口设计开发,满足了通信、计算、工业、消费电子和医疗市场所需的系统控制和接口应用。 瞬时启动,迅速实现控制——启动时间…...

php:实现压缩文件上传、解压、文件更名、压缩包删除功能

效果图 1.上传文件 2.压缩包文件 3.itemno1文件 或 4.上传到系统路径\ItemNo 5.更名后的itemno1文件(命名&#xff1a;当天日期六位随机数) 代码 <form action"<?php echo htmlspecialchars($_SERVER[PHP_SELF], ENT_QUOTES, UTF-8); ?>" methodpost en…...

【机器学习】科学库使用第5篇:Matplotlib,学习目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小…...

Java面试八股文(JVM篇)(❤❤)

Java面试八股文_JVM篇 1、知识点汇总2、知识点详解&#xff1a;3、说说类加载与卸载11、说说Java对象创建过程12、知道类的生命周期吗&#xff1f;14、如何判断对象可以被回收&#xff1f;17、调优命令有哪些&#xff1f;18、常见调优工具有哪些20、你知道哪些JVM性能调优参数&…...

「51媒体」如何有效进行媒体邀约,提升宣传传播效果?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 进行有效的媒体邀约&#xff0c;提升宣传传播效果的关键在于策略性和专业性。以下是具体的做法&#xff1a; 明确目标&#xff1a;要确立清晰的品牌推广目标和策略&#xff0c;包括确定目…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...