用红石比较器玩转‘数字电路’:在《我的世界》里手搓一个‘与非门’三极管
当红石火把在《我的世界》中第一次被点亮时,很少有人意识到这束跳动的像素火焰背后,隐藏着与现代计算机完全相同的底层逻辑。作为游戏中最接近"电子元件"的存在,红石系统本质上就是一套可视化数字电路——而掌握比较器与中继器的组合技巧,相当于获得了打开计算机原理大门的钥匙。
1. 从游戏到现实:红石电路的计算机科学本质
在Java版1.5引入的红石比较器,其设计灵感直接来源于现实中的运算放大器。这个看似简单的方块实际上实现了三种关键功能:
- 信号强度检测:读取容器物品数量并输出对应信号
- 比较模式:当后端输入≥侧面输入时传递信号
- 减法模式:输出=后端输入-侧面输入(最小为0)
这三种模式恰好对应数字电路中的信号处理、阈值判断和算术运算。以最常见的减法模式为例,其运作机制可以用以下真值表描述:
| 后端输入强度 | 侧面输入强度 | 输出强度 |
|---|---|---|
| 15 | 0 | 15 |
| 15 | 7 | 8 |
| 15 | 15 | 0 |
# 红石比较器减法模式的Python模拟 def comparator(subtract_mode, back, side): return max(back - side, 0) if subtract_mode else (back if back >= side else 0)提示:在创造模式中右键点击比较器可切换模式,火把亮起表示减法模式
2. 构建红石三极管的两种范式
2.1 信号阻断型三极管
这种结构的核心在于利用减法模式的归零特性。当控制端输入≥15时,被控电路输出强制归零,实现类似NPN晶体管"高电平导通"的效果:
- 铺设一条15格长的红石线作为被控电路
- 在被控电路任意位置插入比较器(减法模式)
- 从比较器侧面引出控制电路,末端接中继器确保满强度
- 测试:控制端无信号时红石线导通,激活控制端时线路中断
# 阻断型三极管Minecraft指令模板 setblock ~ ~ ~ minecraft:comparator[facing=east,mode=subtract] setblock ~ ~1 ~ minecraft:repeater[facing=south,delay=1]2.2 信号导通型三极管
更接近现实三极管的工作方式,需要构建一个"信号阀门"系统:
- 创建主电路与预阻断电路(均使用比较器)
- 预阻断电路侧面接入恒定的满强度信号
- 控制电路连接预阻断器的后端输入
- 当控制端激活时,预阻断器输出减弱,主电路导通
3. 与非门的模块化构建
与非门(NAND)作为通用逻辑门,其红石实现需要组合前述两种三极管。以下是分步构建指南:
3.1 输入信号处理
- 为两个输入A/B各配置阻断型三极管
- 将输出并联到同一导线
- 当任一输入为0时,对应三极管不工作,导线保持高电平
3.2 输出级设计
在公共导线下游接入:
- 导通型三极管作为反相器
- 最终输出端连接红石灯验证
- 用拉杆模拟输入信号测试
| 输入A | 输入B | 中间输出 | 最终输出 |
|---|---|---|---|
| 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
4. 从逻辑门到计算器:扩展实践
基于与非门可以衍生出全部基础逻辑元件。例如构建1位加法器需要:
- 用两个与非门构建与门
- 用三个与非门构建或门
- 组合形成异或门
- 最终电路包含:
- 输入A/B各接与门和异或门
- 与门输出进位信号
- 异或门输出和信号
// 伪红石代码示意 XOR_GATE = NAND(NAND(A, NAND(A,B)), NAND(B, NAND(A,B))) AND_GATE = NAND(NAND(A,B), NAND(A,B))在生存模式中尝试构建这个系统时,记得用羊毛块颜色区分不同功能区域。从三极管到加法器的演进过程,正是1947年贝尔实验室发明晶体管后,计算机硬件发展的微型复刻。