You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

比尔·盖茨编写的DONKEY.BAS中变量`B%`的功能与数值含义问询

关于DONKEY.BAS中B%数组的解析

DONKEY.BAS是1981年由微软联合创始人比尔·盖茨及早期员工Neil Konzen开发的电子游戏,源码仅130余行。针对你提到的代码片段:

...
1510 DIM B%(300)
1520 FOR I=2 TO 300:B%(I)=-16384+192:NEXT
1530 B%(0)=2:B%(1)=193
...
1760 IF Y AND 3 THEN PUT (140,6),B%
...

以下是具体解答:

1. B%的魔法数字代表什么?

在IBM PC BASIC的PUT绘图语句中,B%是图像数据数组:

  • 计算后-16384+192 = -16192,对应16位二进制1000000011000000。在CGA图形模式下,二进制位为1的位置会显示白色像素,这个值正好对应道路中间的虚线样式,数组中每个后续元素对应图像的一行像素数据。

2. 为何前两个元素的二进制模式与后续298个元素不同?

前两个元素是图像元数据头,而非像素数据:

  • B%(0)=2:表示图像每行占用2字节(对应16个像素宽度),是PUT语句识别图像宽度的必要参数。
  • B%(1)=193:表示图像总高度为193行,对应数组从索引2到300的像素数据行数(开发者预留了少量冗余空间)。
    这两个值是绘图语句的格式要求,因此和后面的像素值逻辑完全不同。

3. IF Y AND 3 THEN PUT (140,6),B%是否通过变换虚线生成动画,让玩家感觉车辆前进?

是的,这是早期游戏常用的低成本运动模拟技巧:

  • Y是驴的纵坐标,Y AND 3用来判断Y是否为4的倍数(最后两位二进制是否为0)。随着游戏进程中Y的变化,这个条件会周期性触发,让道路虚线交替显示/隐藏。
  • 玩家视角固定在车内,虚线的交替变化会给大脑传递“车辆向前行驶”的视觉错觉,无需移动整个场景就能实现运动效果,极大节省了早期PC的计算资源。

内容的提问来源于stack exchange,提问作者da_miao_zi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:25:18