本指南将概述BBC Micro Bot如何在Twitter上工作,以及一些技巧,以减少代码的大小以适合Owlet Editor的推文。
如果您不熟悉或想要复习一下,请先阅读以下精彩的BBC BASIC交互式互动教程,然后再阅读以下内容。下面的指南更多地是关于使用机器人以及如何缩小代码的,而不是介绍BBC BASIC语言。
当您在推文中包含@bbcmicrobot时,该机器人将在BBC Micro仿真器上将您的推文作为代码运行。您的代码必须包含在一条推文中,并将其限制为280个字符。
通常,该机器人会将您的代码运行30秒钟,然后花费3秒的视频剪辑将其发布到Twitter。如果最后3秒钟是静态图片,则漫游器会以PNG图片代替。
您可以在推文的末尾添加表情符号,以向机器人发送命令。这些不包含在发送给BBC Micro仿真器的程序中,也不应该包含在Owlet的代码中。因为仿真器非常快,所以3小时的仿真只需要几秒钟。
🚀火箭表情符号指示机器人运行3小时仿真并提供屏幕截图以进行响应
🎬拍手板表情符号指示机器人运行3小时的仿真并以3秒的视频进行响应
The️不再使用钳形图标。它用来显示一条推文是base2048编码的,但是现在可以自动检测到。
该机器人将回复任何以行号开头,包含=符号或包含特殊字符的提示。这需要改进。
如果您复制或修改某人的代码,则应该回复原始推文,以便其他人可以看到该主题,或者在您的推文中确认作者。当您在机器人上发推文时,您的代码是公开的。您可能会发现其他用户受到启发来帮助减少代码的大小,改进设计或重新混合它-您应该以此为夸奖!
BBC Micro Bot是一个编写有趣的代码并互相帮助的地方。推文中包含任何不良词,将被忽略,用户帐户被阻止。这是自动的,并且经过严格的筛选。
Owlet Editor专为使用BBC Micro Bot进行创意编码而设计。在编辑器中,您可以单击“共享”按钮以自动进入您的Twitter帐户并鸣叫代码。
该机器人的有趣和挑战性的方面之一是您需要将您的代码压缩到一条推文中-代码高尔夫!随着时间的流逝,实现此目的的技术不断发展,其中许多是由流变主义开创的。这里我们概述了一些基本方法,但这绝不是全面的。
给初学者的一个提示-@bbcmicrobot是一个长名称。如果您回复来自@bbcmicrobot的推文,则无需在代码中明确包含@bbcmicrobot提及内容,该bot就可以查看并运行您的推文。这将为您节省13个字符。
您在推特代码中不需要行号。机器人会自动以10为增量添加数字。作为指导,如果您在代码中省略了行号,则Owlet将在编辑器的装订线中向您显示行号。空格通常是可移动的,但是在某些情况下,变量名称紧邻BASIC关键字,则需要空格。
BBC BASIC关键字也可以缩写。缩略语的优点是它们仍然有些可读。但是,它们不如字节令牌小。例如PRINT可以变成P,而GOTO可以变成G。您可以在这里找到最小缩写的列表。使用Owlet编辑器,您可以使用扩展按钮将任何缩写扩展为完全关键字。
每个BBC BASIC关键字在内存中都表示为一个字节。例如PRINT表示为字节值0xF1,即ñ。我们可以在推文中直接使用这些字节令牌来保存字符。 Owlet编辑器使您可以使用“收缩”按钮快速,轻松地自动执行此操作。这是字节标记的完整列表供参考。
请注意,某些字节值必须与0x100进行或运算,以映射到可在编辑器或推文中使用的有效Unicode字符。对于字节令牌,这是在Owlet中自动完成的,BBC Micro仿真器将所有字符代码点与0xFF进行“与”运算,以将其返回为单字节值。
Base2048是一种Unicode编码,已优化用于通过Twitter传输二进制数据。使用base2048可以在一条推文中为您额外提供100个BBC BASIC代码字符,使其总数达到384个字符。但是,我们的“ Hello World”推文将不再可读:
如果长度超过280个字符,Owlet编辑器会自动将任何tweet编码为base2048。仅当您按下“共享”按钮并作为推文发送时,它将进行编码。您也可以使用“扩展”按钮在Owlet中解码。
VDU命令在BBC BASIC中功能强大。它们的许多用途之一是更改当前调色板中分配的颜色:
不必在VDU语句中声明值,而是可以对字节值进行PRINT,它们将由VDU驱动程序以相同的结果执行。有一个方便的在线工具可以将VDU调用转换为字符串。上面的VDU调用将变为:
请注意,图形命令(例如GCOL和PLOT)也可以表示为VDU命令,如转换页上的表格所示。这意味着可以使用单个PRINT命令运行复杂的图形序列!这样可以节省很多字符。
使用BASIC DATA和READ关键字存储数据会很快变大。可以将字节数据直接存储到REM语句中,以通过BBC BASIC监视命令?读出。数据的地址被计算为相对于PAGE中定义的BASIC程序存储器的开头有5个字节的偏移量
在此示例中,返回的第一个值将是116,即字母t的ASCII值。您可以使用VDU到字符串工具创建一个Twitter友好的字节字符串,以在REM中使用逗号分隔的数据