下载客户端

理解主循环与驱动程序

2026-03-25 04:00:05
发布在BASIC8
转载

导读

这篇入门编程帖讲解BASIC8程序的主循环与驱动程序相关内容,介绍主循环作为BASIC8最外层结构的运行逻辑,包括UPDATE_WITH、DRIVER等函数的用法,delta参数的作用,还提及资源加载相关函数,帮助学习者掌握BASIC8主循环范式。

难度:入门 类别:编程 基本范式 事件驱动和主循环是程序结构的两大主要范式。它们都广泛应用于各类应用程序中。BASIC8程序的最外层结构基于主循环,其中一段代码应每秒运行多次;每个循环称为一帧。代码运行速度为30 FPS,而渲染速度为60 FPS。 程序的最小设置可简化为: def update(delta) enddef update_with(driver()) BASIC8程序自上而下执行。DRIVER()函数始终返回当前程序的唯一活动驱动程序;UPDATE_WITH(drv [, r])函数告诉驱动程序如何运行此程序,在这种情况下,它会查找名为“UPDATE”的例程。或者,如果你希望显式使用不同的例程名称,例如“BLAH”,可以使用以下代码: def blah(delta) enddef update_with(driver(), call(blah)) 或者使用字符串指定符来实现相同目的: update_with(driver(), "blah") 还可以使用LAMBDA创建匿名的更新例程: update_with ( driver(), lambda (delta) ( ) ) “delta”参数表示自上次更新以来经过的时间(以秒为单位),这对于计算与时间相关的变化非常有用。例如:通过匀速直线运动移动圆形: x = 0 def update(delta) x = x + delta * 10 circ x, 63, 5, rgba(0, 0, 255) enddef update_with(driver(), call(update)) 【delta】存在的原因是,在实际情况中,每帧的运行时间可能会比预期稍短或稍长,因此需要一种方法来表示实际的时间间隔。 也可以手动创建无限循环,而不是使用例程作为主循环: x = 0 while true delta = sync x = x + delta * 10 circ x, 63, 5, rgba(0, 0, 255) wend 你必须每帧手动调用【SYNC】函数,向驱动程序提交一个周期,该函数会返回【delta】时间。 主循环模式在包括游戏在内的多个领域中都有应用,这是更新和渲染内容的基础部分。这并不是说不能用事件驱动范式来组织程序的其他部分,不过那就是另一个话题了。 加载资源 LOAD_RESOURCE(path)函数用于从磁盘内容中加载资源,它可以加载精灵、地图或量化图像,详情请查阅手册。 与上述函数类似,LOAD_BLANK(y, w, h, n = 1)同样会返回一个已加载的资源,但它加载的是空白资源,而非从磁盘加载。 通过上述任一函数加载的资源没有区别,你都可以使用*GET、*SET函数访问像素,或者以相同方式渲染它们。这将在其他指南中进行说明。 有时我们需要从一个资源模板实例化多个实例,例如生成大量敌人。CLONE(g)用于从现有资源创建一个副本实例,可将精灵、地图(单层或多层)以及量化图像中的任意一种传递给"g"。 RGBA(r, g, b, a = 255)函数通过红、绿、蓝、透明度分量创建颜色,它是值类型而非引用类型,其用法将在其他指南中说明。 UNPACK(c, r, g, b [, a])函数用于从颜色值中解包出各个分量。

评论

共0条评论
face
inputImg
相关阅读
最新更新

编程入门 问道.梦幻鼠标偏移通用解决办法

2026-05-05 22:050赞 · 0评论

编程入门 在Scratch里也能玩贪吃蛇大作战?

2026-04-29 08:130赞 · 0评论

学习Lua - 初学者脚本指南

了解Lua的基本工作原理以及一些编程的基本构建模块。 这是本系列的第一篇指南。 简介 本指南专为那些在LUA脚本方面经验有限的人设计。它将回顾代码格式化的基础知…

2026-02-12 09:010赞 · 0评论

编程入门 俄罗斯方块是如何实现的【渡一教育】

2025-11-19 06:200赞 · 0评论

编程初学者的代码

*DUE TO STILL GOING THROUGH THE GAME, THIS IS A WIP. * I have never created, lea…

2026-02-20 07:000赞 · 0评论

游戏编程入门 2026热门好玩的编程游戏推荐:边玩边学代码的优质选择

代码学习不再枯燥,趣味编程正在降低入门门槛。通过游戏化设计,将抽象的编程概念转化为直观操作,无需机械记忆语法,就能在轻松互动中提升逻辑推理能力与问题拆解能力。这…

2025-10-04 02:530赞 · 0评论

我的世界 Scratch我的世界入门教程【完整演示】

以《我的世界》为主题进行的Scratch入门教程,帮助掌握编程爱上编程。Scratch我的世界入门教程【完整版演示】

2025-09-25 06:290赞 · 0评论

自带工具

难度:高级 类别:编程、工具 BASIC8 提供了满足常见需求的内置工具,此外,你还可以通过编写一些 BASIC 代码来制作自己的工具,以满足其他特殊需求。我们…

2026-04-02 07:000赞 · 0评论

制作音效

难度:所有人 类别:音频、工具 【波形生成器】是一款用于制作波形音效的工具。它能生成供音效函数调用的数据。 获取波形生成器 【波形生成器】以常规磁盘形式呈现。在…

2026-03-26 13:000赞 · 0评论

制作独立播放器为可执行二进制文件

难度:所有人 分类:分享、工具 【玩家生成器】是一款可生成独立播放器的工具,能跨桌面平台生成可执行二进制文件。导出的播放器包包含特定磁盘,无需拥有BASIC8即…

2026-03-25 19:000赞 · 0评论
暂无更多

最新更新

  • 自带工具 — 难度:高级 类别:编程、工具 BASIC8 提供了满足常见需求的内置工具,此外,你还可以通过编写一些 BASIC 代码来制作自己的工具,以满足其他特殊需求。我们…
  • 了解资源 — 难度:高级 类别:编程 另请参见:使用JSON 简介 本指南将介绍BASIC8中资源的文件结构,帮助你编写自己的扩展工具来处理资源。所有通过编辑器创建的资源均为…
  • 地图解析 — 难度:新手 类别:编程、图形 术语表与基本概念 你可以创建、编辑包含一个或多个图层的地图。地图资源中的所有图层可以批量渲染,也可以逐层分别渲染。
  • 制作音效 — 难度:所有人 类别:音频、工具 【波形生成器】是一款用于制作波形音效的工具。它能生成供音效函数调用的数据。 获取波形生成器 【波形生成器】以常规磁盘形式呈现。在…
  • 制作独立播放器为可执行二进制文件 — 难度:所有人 分类:分享、工具 【玩家生成器】是一款可生成独立播放器的工具,能跨桌面平台生成可执行二进制文件。导出的播放器包包含特定磁盘,无需拥有BASIC8即…