《尘世之外》

第一卷-少年时 · 第 022 章

第二十二章 机房

信封比平时的厚。拿在手里掂了一下,一边沉一边轻——不像只有纸。邮戳是十月的,邮路走了一个礼拜才到。

撕开封口的时候一块硬东西从里面滑出来,掉在课桌上,弹了一下。3.5英寸软盘,浅蓝色塑料壳,正面贴着一条白胶布。胶布上面用黑色水笔写着"贪吃蛇.exe"——字是赵启明的,横平竖直,一笔一画,和他在作业本上写给王剑的备注一模一样。

信折了两折,展开来两面都写满了:

"之宇:好久没写。地区实验太累了,一天十节课,晚自习到十点半。但王剑拉我去了计算机房——学校有二十五台586,Windows95,能跑QBASIC和C。他比我厉害多了,已经能自己写文件管理器了。

这张软盘里的贪吃蛇是他花一个下午写的。你拿到你们机房试试。逻辑是用数组画一条蛇,蛇头走一步尾巴删一格,吃到果子蛇身加一截,撞到边界或自己就结束。两百行,逻辑很清楚。

家里人有信吗?陈默怎么样?赵启明。2000年10月8日。"

我把软盘翻过来。背面印着"3.5" 1.44MB"。很轻,十几克的东西。塑料壳的边缘有一道细缝,指甲伸进去拨一下,里面的磁性盘片会转——一片薄薄的棕黑色圆片,装着一条会动的蛇。赵启明把王剑写的代码装在一个牛皮纸信封里,从地区实验出发,翻过两座山,送到一中我的课桌上。邮戳是十月的,邮路走了一个礼拜。

又把软盘翻回正面。白胶布的边角有点翘,我用指甲按了一下,按平整了。浅蓝色塑料壳上有几道细纹,大概是邮路里被其他信件挤的。磁头窗口的金属遮板还能滑动——推一下开,推一下关,开的时候能看到里面棕黑色的盘面,关的时候严丝合缝。

信封里还有一张纸,折了两折。打开是一行手写的地址:"地区实验中学计算机教室"——赵启明在最后加了一个括号,里面写"你信里说的周老师应该能帮你跑"。


十一月初一个星期四下午,信息课。周老师坐在讲台后面改作业,台灯照着他半边脸。他的眼镜片在灯光下反光,看不清眼睛。我把软盘递给他,他接过去在手里翻了翻,看了看标签上的字。

"谁给你的?"

"朋友。地区实验的。"

他站起来,把软盘插进讲台那台旧宏基的软驱。宏基的键盘很旧,空格键上的漆磨了一半,露出底下的灰塑料。软驱咔咔响了几声——声音很涩,像齿轮咬合缺了油,咔了两下才吞进去。绿色指示灯亮了一下,硬盘读盘的声音吱吱响。屏幕闪了两闪。黑底绿字的面板上跳出一个方框。

一条绿色的小蛇在方框里扭着走。按方向键,蛇头转弯;蛇嘴咬到一颗星号,蛇身长一截;撞到方框边界,屏幕弹出白字:"Game Over"。底下一行:"最终得分:X粒"。

我玩了三局。第一局吃了七颗就撞墙了。第二局撞到自己,分更低。第三局拿到十七分。

周老师在旁边站了两分钟。他没有操作,只是看。"代码写得清楚,"他说,"模块分得好。"

他退出游戏,按了两下快捷键,打开QBASIC编辑器,把源代码调出来。屏幕上绿字排成密密的行——数组定义、循环嵌套、条件判断。王剑在每个关键段落前加了中文注释,用单引号开头,QBASIC自动跳过不执行。

第45行的注释写着:"吃掉果子之后蛇身加一,新身体的起始坐标先放在旧尾巴后面——等下一帧再刷新。"

一行一条注释。和赵启明当年在试卷上批改错题的笔记一模一样——写注释不是为了自己看,是给别人看的。

我盯着屏幕看了半节课。代码的逻辑一条一条往外蹦:蛇头走一步,尾巴缩一格;蛇头撞墙,程序跳到结束段。像拼图,每一块有固定的位置,拼对了就跑得动,拼错了就死循环。


当天晚上,我蹲在上铺被窝里抄代码。

手电筒是从林军那借的,银色铝合金外壳,拧开尾盖换电池的那种。光打在作文本上缩成一个橘黄色的圆圈,圆圈外面全是黑的——宿舍熄了灯,大周在对面铺打呼噜,一吸一呼像拉风箱,吸的时候带一声哨音,呼的时候轰的一下。阿坤在下铺嚼方便面,咔嚓咔嚓的,调料粉掉在枕头上。

我把作文本竖起来靠在膝盖上,一个字一个字地抄。SegSnakeX(100), SegSnakeY(100)——那些英文字母写得歪歪扭扭,好几个写到格子外面去了。"for"写成了"fir",擦掉重写,橡皮在纸上留下一团灰印。randomize timer——这一行不懂。先抄下来,在旁边用铅笔画了一个问号,等下周找周老师问。

抄的时候手心出汗,笔杆滑,握得紧了指关节发白。橡皮擦过的纸面起了一层毛,钢笔写上去墨水洇开,像干裂的田里倒了一瓢水。手电筒的光正好照在笔尖那一点,其余全是黑的。被窝里的空气闷,呼出的热气在手电光里变成白雾,散得慢。

抄到第四页的时候手腕酸了。甩了两下手,继续。手电光开始发暗——电池快不行了,橘黄色的圆圈缩成鹅蛋大小。我把被子拢了拢,让光尽量集中在笔尖底下。

十一点半,抄完了。作文本上歪歪拧拧排着四页代码。墨水在横线上洇开几个小圈——手电照着的地方热,纸面被照得有点温,墨水化得快。合上本子的时候笔尖在最后一页戳了一个洞。


接下来三周,信息课我不再坐到学生座位上。周老师让我在讲台那台宏基上自己改代码。

第一次改蛇的皮肤。LINE语句里的颜色参数从2改成14——绿色变黄色。按F5运行,一条亮黄色的蛇在框里扭着走。大周在旁边"咦"了一声。

第二次改边框,蓝色改绿色。第三次改速度——把FOR循环的步长从1改成0.5,蛇跑得快了一倍,我玩了五局没活过三秒,又改回去了。

最后一次。把"Game Over"那个字符串改成"你撞了"。三个字。删除,重输,回车。光标在等号后面闪了两下。按F5。

屏幕闪了一下。蛇在框里走,我故意撞墙,黑底上弹出三个白字——"你撞了"。

不是英文,不是机器说的。是我自己的话。从代码里钻出来了。三个字让整条蛇变了一个脾气——撞了墙会停在那里,等我按键重来。

周老师过来看了一眼。"改的什么?"

"提示语。"

"改成中文了?"

"嗯。"

他笑了一下,没说什么,走回讲台继续改作业。


十二月底,写出第一个自己的程序。

不是改贪吃蛇。是一个管道流量计算器。输入管径和流速,自动算出流量Q。程序只有三十几行,变量定义为双精度浮点,核心公式就一个:Q=πR²×v。物理课本上见过这个公式——管径除以二得半径,半径的平方乘圆周率得截面积,截面积乘流速得流量。以前用手算,查表、列式、算术、验算,至少十分钟。现在敲一个数字回车,哗的一下就出来了。

写这个程序花了三天。第一天在草稿纸上画逻辑框——输入、计算、输出,三个框用箭头连着。第二天写代码,在QBASIC里一行一行地敲。π的值取了3.14159265,双精度浮点能装得下。敲完最后一行按回车的时候手在抖——不是紧张,是手指头按了一下午键盘,僵了。第三天调试,改了两处错误:一处是变量名大小写不统一,一处是输出格式里少了一个分号。分号补上之后运行,屏幕上清清楚楚地跳出结果:Q=0.0706858。

那个数字在黑屏上亮着,像一颗刚泡出来的绿豆。

运行的那天下午,周老师站在后面看了一眼。他没说话,看完之后拍了一下我的肩膀。拍的力度很轻,轻得像落了一片树叶。

"这是你自己写的?"

"嗯。"

"不是改的?"

"从头写的。"

他走回讲台,弯腰在作业本上写了几行什么。


我把两个程序都存在那张蓝色软盘里。

拔出软盘的时候,软驱又咔了两声——还是那种涩涩的声音,像骨头在磨。软盘拿在手里,比一张扑克牌大不了多少,塑料壳上的白胶布翘了一个角。我用指甲把翘起来的角按回去,按了两次才粘住。

拿笔在标签上加了第二行:flowcal.bas。赵启明的字横平竖直,"贪吃蛇.exe"五个字排得整整齐齐。我写的"flowcal.bas"歪歪扭扭,笔画的墨水在胶布上洇得比纸上快,有一半还没干透。两种字迹挤在一条白胶布上。

晚自习结束后走回宿舍,我把软盘放进铝饭盒里。饭盒是开学带过来的那个,搪瓷掉了两块,露出里面的黑铁。软盘放在饭盒底层,上面盖一层作文本,再扣上盖子。没有光,没有热,什么都没有,只有两条程序的安静。

大周在吃泡面。面饼掰成两半塞进搪瓷碗,倒上开水,调料包撕开的时候红色的粉飘出来一点,落在桌面上。他抬头看了我一眼。

"机房?"

"嗯。"

"又写代码?"

"嗯。"

他吸了一口面条,汤汁溅到他的作业本上。"你现在越来越像赵启明了。"

我不知道这是夸我还是在说别的什么。他端着碗继续吃,腮帮子鼓起来,嚼面的声音压过了宿舍里所有的呼噜。

我爬上上铺。铁架子咯吱响了一声。把作文本垫在枕头底下,手电筒还给林军——他接过去没说话,翻了个身,又把手电筒塞回枕头底下。

躺下来的时候摸了摸枕头。枕头底下有两样东西——一本作文本,里面抄满了代码;一张软盘,在饭盒里很安全。我把手缩回来,闭眼。大周的呼噜声又响起来了,一吸一呼,和机器读盘的声音节奏差不多。咔——呼。咔——呼。

我听着这个节奏,慢慢睡着了。