一般程序猿都会有一些怪癖,现实中的不清楚,但是小说里面一般都会这么写。古屋也就喜欢玩玩游戏,当然要是玩玩什么英雄联盟、魔兽世界的大型游戏也就无法体现出古屋的特立独行。这时候,一类叫做泥巴的游戏让古屋的格调就上涨了。
泥巴是音译过来的,其英文名:MUD,全称MultipleUser
Domain(多用户虚拟空间),这是什么游戏,简单来讲这就是最早最早的网络游戏的雏形,它具备了所有当前网络游戏的素材,比如角色、装备、副本、道具等等,但是唯一的区别就是,它所有的表述都是用文字和符号表达的。很简单,如果进入一间房间,想要看看房间里面的内容,现在常规的游戏就是通过图片来表达,有一个床,一把椅子,一个桌子等等,如果窗户上窗帘拉上了,就让房间内的光绪变得暗一些。而mud的表述是:“你进入了一个房间,里面有一张床、一把椅子和一个桌子,窗户关上了窗帘,只感觉到黑漆漆的。”这就文字,红红绿绿的文字表示着不同的内容,黑底绿字、黑底红字,不停地跃动,这似乎就像是一个编程的界面,古屋还没接触易语言就接触到了mud游戏,他就是本能的喜欢,只要是用文字来构造的游戏,他都会去尝试尝试,似乎天生就是对文字有特殊的癖好。
因为这类游戏很古老,操作起来是需要通过发布指令,当需要移动的时候,就需要输入“north”(北),当需要赠送给玩家物品的时候,需要输入“givesb
something”(给某人某物),有时候古屋觉得自己在学习初中的一些词组,而这些命令,有时候编程是互通的,因为这面有最最原始的外挂——robot(机器人),顾名思义,机器操作代替手工输入,因为mud是需要输入很多指令的,比如买东西这样子的命令,完全是重复操作,就可以通过编写一串代表重复操作的命令,例如“rgc;e;s;list”等去实现。常人看这些字符,可能像是看天书,但是懂行的人看起来就很简单,就好似易语言的代码一般,懂的人看一眼就知道症结,不懂的人调试来调试去就是不晓得错误在哪儿。
mud游戏有很多,也分很多款,古屋喜欢的三国类型的,但是找来找去都很难找到,这也让他常常徜徉各类mud网站之间,掌握了很多mud之外的内容,比如结识了一个作者。
说来也是很巧,当古屋在玩mud的时候,他脑子里面就动着,有没有将一些方位命令和PK命令安置在某个按钮上的想法,比如只需要按下按钮1,就能够实现mud游戏人物的“north”向北移动的操作。古屋找了很多“鼠标操作mud”的方法,最终看到了一款整个界面风格都比较怀旧的鼠标mud端,这让古屋欣喜不已。
当时古屋就下载下来,结果一家压缩就被报毒了,然后古屋也就不了了之了,没再去下载。虽然作者最后都强调了——“注:本图形客户端是由中国,国产编程语言,易语言编写而成,但是有某些杀毒有可能会报毒,大家可以把程序添加为信任!请放心我们会保证程是绿色安全无毒无害!”因为当时的古屋没有接触到易语言,他只是为了寻找一款可以鼠标化操作的mud游戏端,他自然不会关注到易语言的消息,这些消息在不关注的人的眼中,就是一些废弃的垃圾信息,而一旦需要了,这些信息又立马“变废为宝”!
古屋掌握起易语言了,他只是记得有这么一款软件,他也忘记自己从那个网站上去搜到了,可能是某个游戏群里面下载的,古屋常常这么安慰自己。直到有一天,他逛贴吧,在mud吧突然看到一则帖子,让他欣喜不已。
《我的MUD开发随笔》——
“大半夜的想给正在开发的《江湖》手机MUD重新做个封面,以mud搜了一下相关图片。忽然发现多年前的处女作xmud竟然还有图片保留在搜索到。。。
曾经尝试着想在电脑上简化mud客户端,结果种种原因无疾而终!
如今尝试着在手机上做新的突破,转眼又是N个月过去了。。。
忽然觉得好累,其实本来当初应该做个通用版开放手机端的。。。不知道有木有能玩在一起的小伙伴。。一个人弄得好累啊。。。有木有各方爱好者交流一下呢?”
古屋一看图片,就是当时下载的那一款,真的是“踏破铁鞋无觅处,遇到全然不费事”!古屋赶紧跟帖:“膜拜易语言大神!我曾经下载过你的mud客户端的!易语言菜鸟,求指点!”这种激动,溢于言表,有时候常常用着某块软件,一直想要和软件的制作者沟通,mud客户端的作者如此,易语言的作者也如是。古屋一度将好多易语言的大神的**都关注了,易语言创始人曾经发帖感叹,古屋跟帖后留言,结果被大神直接回复,这让古屋兴奋得半宿没睡好,结果当晚做梦都梦见自己去了湖北让创始人像贵宾一样子给接待了。崇拜在各行各业都是存在的,不喜欢电子竞技的是不了了解与知名电竞玩家“笑笑”合影是多么快乐的一件事情,古屋也无法理解为什么古太太看见韩国都教授直夸帅到无边。
可惜对方的回复让古屋有点失落,对方说:“此前的是用易语言的,这几年起起伏伏,现在手机端是新学习的java做的,易语言已经好久没用了。”
古屋当然不会死心的,因为他的梦想就是写一款文字游戏,而现在遇到的这位“大神”,曾经就是搞这方面的,现在虽然重心倾向于手机端了,但是还是以文字为主,跟着他,肯定会有所收获的。
于是乎,古屋就通过私聊的方式继续与大神交流——
【名古屋】:“大神,你好歹也讲讲你的易语言学习经历,有没有什么方面可以提点我呢?我喜欢易语言,希望深入地研究下去!”有句古话叫做“听君一席话,胜读十年书!”有时候别的一句提点,胜过自己琢磨两三小时甚至一两天,再有甚至就是直接是质的飞跃,而古屋就是想和高手聊聊,听听他们的故事,品品他们的心境,从中收获养分。
【陌生人】:“我也不是什么高手,易语言就是编程软件,你用好了,你就会了。——提示当前交流对象为陌生人,请注意互动安全”
【名古屋】:“我现在就是很迷茫,每天学习着,但是不知道学什么?”
【陌生人】:“你要明白自己到底想什么,整天在外围打圈,到头来你自己都不知道会了哪些。——提示当前交流对象为陌生人,请注意互动安全”
【名古屋】:“有没有什么好方法吗?”
【陌生人】:“这么着吧,我给你五道题,你看看自己写不写得出来,你要是真要是想学,你可以去精易论坛看看,那儿氛围好!——提示当前交流对象为陌生人,请注意互动安全”
很快,对方给了一个链接给古屋,也算是打发走了古屋。古屋打开链接看了,原来是一个编程的故事《程序员必须1小时内解决的5个编程问题》其中有五道题,让人开动脑筋来解一解——
问题1:使用for循环、while循环和递归写出3个函数来计算给定数列的总和。
问题2:编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。
问题3:编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。
问题4:编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。
问题5:编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1+2+34–5+
67–8+9=100。
突然感觉对方就像是旷世高人,当年黄石公传授张良兵书十二卷都没这么玄乎,对方像是给了古屋一道编程与人生的考题,是希望通过这些题目让古屋明白自己不是一个适合做编程的人呢?还是想告诉古屋一些别的方面的思考呢。
古屋此时如获至宝,开始钻研起这些题目来,这些题目,不像是之前古屋遇到难处,以前古屋都是遇到的是实际困难,从来没有过多的涉及理论知识。就好像,以前学数学,都是学着应用题,小明有颗糖,小红有颗糖,两个人加起来有几颗糖。而现在学习的就是标准的一元一次解方程组,现实中的很多例子能够找到影子,去无法像X那样子特别的学术化。古屋也的确是重实践而轻理论。这些题目,可能解决不了一个现实中的问题,却是培养逻辑思维的好题目。
就以第三道题目为例,古屋咋一读的时候,突然觉得好简单,不就是0+1=2,1+2=3,2+3=5,3+5=8,随便一个小学生,都能从中发现题目解答的方法,但是突然要求变化了,让电脑实现,这可让顺畅的大脑思维给短路了。
古屋随便写了几行代码调试之后,突然,他觉得这个电脑为什么这么笨拙呢?像一头大笨驴,就是不能将脑筋转个弯,总是以时速八十迈的速度撞到错误上。
解决这道题目的关键就在于如何解决一个加法最终得出的结果如何变化的问题。如何将两个数相加的和变成第二个加法中的第二个加数这就是问题的核心。
古屋是这么考虑的,他通过设置一个子程序-运算(),设置两个参数,将“0+1”,“1+2”等这几个过程通过子程序运算出结果,然后将这个结果赋值给程序集的变量C,这样子就保证了这个变量C能够在所有的程序集的子程序中都能使用。解决了核心的内容,就是对整个程序的架构了。
定义两个程序集变量A和B,他们的初始值就是0和1,把A和B看作第一个加数和第二个加数,然后再添加一个时钟,时钟周期里面开始寻找斐波那契数。将变量A和变量B放到运算()这个子程序中去运算获得变量C,而这个变量就是斐波那契数,然后通过加入成员()的命令,将变量C加入到一个叫做“斐波那契数”的数组中,接着再将先前的变量B的值复制给变量A,将变量C的值复制给B,让变量A和B拥有新的值,取运算获得下一个斐波那契数,然后最后通过一个判断的命令,当取数组成员数的个数等于98的时候,就终止时钟周期并输入初始的0和1外加其余运算获得的98个斐波那契数。
古屋突然觉得自己像是在考试,他觉得易语言也能特别理论地去运算一些没有作用的东西,但是,这确让他觉得神清气爽,以前混乱的脑子有一股子的清醒,他好像明白自己想要什么了,他需要的逻辑思维和实际的运用能力了。古屋能够这么快的解决其中的一两道问题,并不是因为他很聪明,而是他已经通过长时间的正规学习获得了比较敏锐的逻辑思维能力,有时候,一个问题可以从正面看,也可以从反面看,如果只像《红楼梦》里面的**只能照一面是会让自己的受伤的,需要辩证的开打问题,有时候当文中出现某个字符的时候,就做运行某个程序,其实可以反过来想,当文中不出现某个字符的时候,就不运行某个程序。真真假假,虚虚实实,顺着倒着,让自己的思路开阔,才能让梦想飞出越高的距离。