林墨意识回笼的瞬间,闻到的是消毒水和粉笔灰混合的味道。
不是ICU。他进过ICU——三年前胃出血那次。那是更净的、冷冰冰的气味。现在这个,是老教学楼特有的,乎乎的,带着墙皮剥落后的霉味。
他睁开眼。
昏暗的走廊,头顶白炽灯管发出细微的电流声,有一半不亮。墙壁下半截是墨绿色的墙裙,上半截白灰剥落,露出灰黑色水泥。两侧是紧闭的教室门,门牌上写着101、102……
林墨低头看自己:格子衬衫,深灰卫衣,牛仔裤,手腕上戴着运动手环。口没有血,喉咙不疼,心脏跳得有力。
“我没死?”
他记得自己趴在键盘上,屏幕上是第十七版需求文档,经理在群里发了六十秒语音方阵,他没来得及听,眼前一黑,世界就关机了。
手机不在口袋里。取而代之的是一张硬质学生证。
华国科技大学,计算机科学与技术专业,林墨,应届毕业生。
照片上的人和他长得一样,但年轻两三岁,眼神里没有那种被996掏空的疲惫。
穿越了?
还没等他理清思路,一个冰冷的、不带任何感情的声音在他脑海中炸开——
【全球公告:规则怪谈游戏已开启。】
【各国天选选手已抽取完毕。直播同步启动。】
【当前副本:午夜教学楼。】
【难度:新手。】
【存活时间:06:00:00。】
【规则将在60秒后显现。】
林墨瞳孔微缩。规则怪谈?天选选手?直播?
下一秒,他面前凭空浮现出一块半透明光幕。左上角烫金大字:【华国专属直播间】。旁边一个数字正在疯狂跳动——在线观看人数:2,147,832。
弹幕像洪水一样涌出来。
“这就是华国抽到的选手?看着不太行啊。”
“看他那黑眼圈,怕不是个熬夜打游戏的废物。”
“完了完了完了,隔壁樱花国抽的是自卫队退役教官,我们这……”
“国运啊!这关系到国运啊!怎么就抽了这么个普通人?”
“有没有可能他其实是大佬?”
“你见过哪个大佬穿格子衬衫的?”
林墨面无表情地扫了一眼弹幕,然后移开目光。
他经历过比这恶毒一万倍的代码评审,承受过比这更窒息的产品经理夺命连环call。几句网络嘲讽,甚至不如甲方在群里发“这个需求很简单”来得有伤力。
现在的问题是:他需要信息。
走廊很长,两端都被铁栅栏封死。窗户外面是浓得化不开的黑暗,什么都看不见。整个世界似乎只剩下这条走廊和两侧的教室。
他试着推了推最近的教室门——锁着。又走到走廊尽头,铁栅栏冰凉,上面没有锁孔,像是从墙上长出来的。
林墨没有慌。他开始沿着走廊走,一步一步,心里默默计数。
从西端到东端,六十二步。步幅大约七十厘米,全长约四十三米。教室门每隔三米一扇,一共十二间。走廊宽度大约两米。
他在收集数据。就像接手一个陌生,第一件事是把所有接口跑一遍。
弹幕还在刷。
“他在嘛?丈量土地?”
“好像在观察环境,至少不是原地等死。”
“别观察了,规则要出来了!快看走廊!”
林墨停下脚步,抬起头。
血红色的文字开始在走廊半空中凝结,一笔一划像是用蘸了血的毛笔写成的,往下淌着暗红色的光。
【午夜教学楼·规则怪谈】
明规则(共8条,已显现3条):
1. 本校开放时间为22:00至次05:00,请在校学生在此时间段内在校。
2. 不得在走廊内奔跑。奔跑行为将被视为违规。
3. 当听到下课钟声时,必须立即进入距离你最近的教室。钟声结束后方可离开。
(其余规则将在特定条件下显现)
弹幕炸了。
“只有三条?后面五条呢?”
“隐藏规则才是最要命的!”
“樱花国那边已经开始有人乱跑了,笑死。”
“泡菜国选手刚才去推铁栅栏,被电了一下,手都焦了!”
“华国这个怎么还在发呆啊?”
林墨没有发呆。
他正把这三条规则拆成自己最熟悉的东西——代码。
第一条:时间约束。if(当前时间<22:00 || 当前时间>05:00) → 违规。
第二条:行为约束。if(行为==“奔跑”) → 违规。关键问题是:多快算奔跑?快步走算不算?小碎步呢?
第三条:动作约束。if(听到钟声 && 行为!=“进入最近的教室”) → 违规。关键问题是:“最近的教室”——距离怎么算?直线距离还是路径距离?如果站在两个教室正中间,哪个算“最近”?
林墨闭上眼,在脑海中构建了一个简单的位置模型。
走廊四十三米,教室门每隔三米一扇。如果站在走廊中轴线上,那么到左右两间教室门的距离可以精确计算。规则没有规定“距离”的计算方式,也没有说明“最近”的唯一性。
如果两个教室一样近呢?
规则用的是“距离你最近的教室”,单数。这意味着系统默认存在唯一最近距离。但如果站在某个特定位置,使得两间教室门与你距离完全相等——那就不存在唯一最近。
这是典型的未定义行为。在编程中,这是bug。在规则怪谈中,这是——漏洞。
林墨睁开眼,眼底闪过一丝光。
弹幕捕捉到了他的表情变化。
“他刚才闭眼在想什么?”
“不知道,但他睁眼之后好像变了个人。”
“别吹了,就是个普通人,等着看吧。”
就在这时——
“叮……叮……叮……”
沉重的下课钟声从走廊尽头响起,像是从很深很深的地下传上来的,每一个音节都震得人腔发闷。
钟声。
林墨此刻站在走廊靠东的位置。他身后一米是112教室,身前两米是113教室。
按照规则,他应该进112。
但他没有动。
他大步走向走廊正中——那个他刚才在心里计算好的位置。步子很大,但不是跑。严格遵守第二条规则。
三步。两步。一步。
钟声在第五秒时,他站定了。
现在,他的左侧是112教室门,右侧是113教室门。他面朝走廊北墙。沿走廊方向,他距离112和113的教室门——完全相等。
大约都是两米五。
哪间是“距离他最近的”?
没有。距离相等,不存在唯一最近。
钟声在第八秒停止。
走廊恢复死寂。
林墨站在原地,完好无损。
弹幕凝固了一秒,然后爆炸。
“他没违规???”
“他没进教室啊!钟声结束了他还站在走廊里!”
“我反复看了!他站的位置离两间教室一样远!”
“这尼玛是规则漏洞?!”
“他刚才闭眼就是在算这个?!”
“我收回之前的话,这人有点东西……”
“不是有点东西,这他妈是天才吧!”
林墨没有看弹幕。他正盯着走廊尽头。
铁栅栏上,出现了一个之前没有的符号。
像是两个斜杠——注释符。
他的视野突然发生了变化。那些血红色的规则文字在他眼中开始自动拆解、重组成一行行清晰的代码——
if (currentTime < 2200 || currentTime > 500) {
triggerViolation();
}
if (action == "RUN") {
triggerViolation();
}
if (bellRinging && !enteredNearestClassroom()) {
triggerViolation();
}
函数、变量、条件判断——一切都变得无比清晰。
林墨怔了一下,然后嘴角缓缓上扬。
这是穿越福利吗?
脑海中,一个冰冷的声音响起——
【检测到宿主成功解析规则逻辑漏洞。】
【代码逻辑解构系统——激活中。】
【激活完成。】
【欢迎,程序员。】
系统。
林墨深吸一口气,压下心中翻涌的情绪。
他看向铁栅栏上那个注释符号,又看向走廊深处。远处传来高跟鞋敲击地面的声音,哒、哒、哒,越来越近。
红衣班主任要来了。
但他没有恐惧。
他盯着那个注释符,低声说了一句话。声音很轻,但直播间里离他最近的虚拟麦克风捕捉到了。
“规则是吧?我先debug,再上线。”
弹幕彻底沸腾。
“他说什么?debug??”
“他把规则怪谈当代码调?!”
“华国这是抽了个什么怪物啊!”
“我已经截图了,等一个真香!”
“在线人数破五百万了!全都在转播华国频道!”
而在华国某个城市的客厅里,一个头发花白的老教授死死盯着屏幕。他认出了林墨刚才的步态和眼神——那不是普通人能有的计算能力。
老教授拿起电话,拨通了一个号码。
“老周,你看华国直播间了吗?对,就是那个年轻人。我觉得……我们这次可能捡到宝了。”
走廊的灯光又暗了几分。
哒、哒、哒——
高跟鞋的声音越来越近。
林墨转过身,面朝声音传来的方向,把手进卫衣口袋,等着。
他的眼前,系统面板上浮现出一行新的信息:
【精神力:87/100】
【已解锁功能:规则可视化、基础逻辑解析】
【下一功能解锁条件:通关当前副本】
林墨扫了一眼,心里有数了。
钟声后的走廊异常安静,只有那不急不慢的脚步声在靠近。教室门上的门牌号开始渗出血迹,墙角的阴影里似乎有什么东西在蠕动。
但林墨只是平静地看着走廊尽头,等着那位“班主任”现身。
他甚至有点期待。
因为按照规则四到规则八还没有显现的逻辑,班主任的出现本身,一定也遵循某种规则。
而规则,就是代码。
代码,就会有bug。
而他,修了五年bug。