从五滴老大那儿,古屋填充了点精神补给,但是励志的故事不能当饭吃,热度的保持需要坚持不懈的毅力,而不是听一个故事。
收拾好自己的心态,古屋开始阅读起了五滴老大提供的光速引擎模块,不管有多懂,也不管懂得了多少,去动手看一看想一想,总是会有收获的。
古屋对于一整套开源的内容一个一个例程逐一调试了,有时候调试运行是最枯燥的行为,因为发现错误比制造错误难度大多了。当源码不是很清楚的时候,看看源码体现出来什么内容,从表面去推敲到实质,也不失为一种方法。当古屋在调试运行一个简易的网页聊天室的时候,他突然有了一念想法,也可以说是一种冲动——去写一款网络聊天室。
为什么要去写一款网络聊天室的,其实古屋是基于自己一直不变的梦去不断地去贴近。文字游戏,最大的乐趣就在于文字,而对于文字来说,只有变化多端的内容才会让人流连,而如果是系统本身设计的,就算是可以很复杂很智能,但也终将被穷尽,唯有玩家的交流还是无穷无尽的,如何让网络文字游戏能够生存,古屋的出来的观点就是聊天,有足够的吸引力让人去聊天,这就足够了。而古屋也是这么构思他的小说。
正当古屋准备筹划的时候,女友电话催了,要求去逛街。陪女友逛街是一个成功恋爱人士的标志之一。编程的人喜欢自称是程序猿,进化到程序猿不是那么容易,古屋也还没有晋升到那种境界,还是需要人间的七情六欲、恩怨情仇。虽然人是出去陪着女友逛街,但是心和脑子可以惦记在易语言的身上。有时候长坐在电脑桌前,考虑问题脑子是会僵硬的,而出去透透气,清醒一下,说不定在返回电脑桌前就找到了解决的方法了。
逛着逛着,女友就发现问题了:“老实交代吧,我不怪你!”
古屋一头雾水,停下手机,一脸无辜地望着女友,如果这个时候的表情有半点的懈怠,那么后果可能就是回家跪键盘了。
“你说你出来逛个街,你就不能好好出点主意,盯着手机看,是不是手机上在和小三聊天呀?”女友嘟着气呼呼的嘴,表示抗议。
古屋一看状况升级,赶紧解释,手机坦白地伸向女友,“想点事情,用手机记一下而已。”
“得,一边看手机还一边偷笑?你别瞒天过海,姐这艘贼船,你上也已经上了,想返程,对不起,我已经海中央,要跳海可以,没有救生圈,生死由命!”女友打趣地发泄着不满,最后还是不放心地抢过手机一扫干净。看了手机,她就信了,因为上面写着如果()、判断()等等一些看上去就是易语言指令的命令。
“你还在鼓捣你那个破玩意儿?你的确定你能行?”因为此前的计算器软件已经让古屋女友觉得古屋就在做一些并不应景的东西,纯属是在浪费时间!
古屋也不好说什么,不知者无罪。不过,嘴上还是要逞逞强:“改天一定让你大吃一惊!”结果这话还真应验了,现在就不表开来。且说古屋手机里面写的一些代码,其实是古屋对架构网络聊天室的框架性想法。如果有客户进入,必然是需要判断是否为新用户,如果没有聊天帐号,就需要注册,如果已经有了,就准许进入。
“好记性不如烂笔头”,一旦遇到一些新奇的或者有用的信息都可以记下了,古屋现在还不够习惯,到时候到了后面学习之后,他发现良好的笔记能够让牢固掌握获得的信息。只是一大遗憾就是易语言的编程设计的时候,没有对手写或者通过电脑记事本等写代码做出一些规范性的说明和指导,要是易语言官方能够主导这类非软件下的代码书写规则,这想必也是一项创新,一款不能做笔记的编程语言,总会觉得缺失,就好像专业介绍易语言的书籍很少一样子,这其实就是因为代码的书写存在难度,导致很多民间的群众都很少通过出纸质教程来推广。要是那天因为易语言的某本手抄本能够一时间洛阳纸贵,这是何等的疯狂呢
女友的火消了又逛了半天,等古屋回到家的时候,他已经将此前逛街时候思索的内容进行了分类。可能这些问题他从来都没遇到过。就用构建聊天室的框架,他就是真的从零基础开始。还好网络上各类教程视频是琳琅满目的,只要精心挑选,定是能够找到一款清晰教学思路的视频教程的。这里就不得不提一下另一为民间初学者的恩师——世宝。他和觅风真算得上易语言初级教程的招牌人物。就好像是易经分为易理和象数一样,觅风是那种通过组件方法来引导出某款程序,而世宝则喜欢通过某个案例的教学来引申出涉及的概念和基础。这是两种风格,没有还好,各有侧重。当遇到古屋现在需要去掌握某一特定内容的时候,世宝的关于网络聊天室的视频教程就与古屋的需求所吻合了。
“凡事预而立,不预则废。”古话还是有道理的,撒开手,不管自己的知识贮备就乱来一气,最是容易事倍功半。而耐下心来,先把手头上的事情都整理一下,将自己了解的、不了解的情况都能够罗列出来,有针对的学习,这样子才会达到事半功倍的效果。
古屋仔细学习了世宝的聊天室的视频。
按照理论上来说,通讯方式有两种模式,一种叫做”C/S模式”,一种叫做”B/S模式”,其实C/S——Client/Service:客户机/服务器模式,B/S——Browse/Service:浏览器/服务器模式。而世宝所利用的就是客户机/服务器模式,这应该是比较传统的一种,也是最好理解的一种。一个叫做客户端的东西,它发送了一串代码类似“你好”给了服务器,而服务器收到“你好”的命令后,根据一些计算法则,将反馈的数据编辑好,然后重新发还给客户端,客户端就接收到讯息,然后显示给用户看。
其实,这样子的要求就能满足古屋的设想,那么不管如何去制作一款游戏,先把聊天能够功能设计出来。古屋根据原理,设计了一个EXE作为了客户端,另一个EXE作为了服务端,利用核心支持库里面的“客户”和“服务器”的两个组件就是实现了最原始的连接了。设置好端口,一般默认的都是“19730”,利用客户1.连接(“127.0.0.1”,19730)这个命令就能实现本机上的连接。然后就是设置通过客户端的客户1.发送信息()以及服务端的服务器1.取回数据()和服务器1.取回客户()等相关命令拼接起来。
简单的通讯是不会难倒认真看过视频就古屋了,但是为了实现一边聊天一边玩游戏的梦想,那就要动点脑筋的。不过,一通百通,其实客户1.发送信息()是通过点击某一按钮的即能发送,也没有限制发送的内容,那么,如果通过人为的方式去标注一些指令的行为,那就能够实现服务端对数据的处理。当发送信息的开头是以“001”开头的时候,就让服务端判断为聊天信息,只需要将信息反馈给所有在线的用户即可,而当发送信息的开头是“002”开头的时候,就让服务端判断为玩家的游戏行为,可能需要将数字后面的所有玩家信息进行处理,然后与数据库的内容进行比对,然后通过一系列的运算得出反馈的结果,在通过服务器1.发送数据()将所需要返还的数据返回给玩家,让玩家继续进行下一步操作。通过对命令信息的判断,从而就实现了聊天和游戏的双重任务,看上去很美妙。
文字打起来的这个思路,看上不是很难,但是实际操作的时候,就复杂多了。那么多的处理信息,如何将信息记录怎是一个大问题。一开始,古屋想到的是常用的读写配置项的方法,不过有些数据是常用的,就好像是常量一般,通过读写配置项有点麻烦,古屋就继续寻找,花了一点心思,终于找到了易语言自带的数据库(EDB数据库),这个是比较简单的,常用的也就是写()和读()等几个常用的数据库。人的思维不能固化,古屋的确蛮佩服一些人坚持不懈的毅力,记得在使用五滴的时候,有人为了一个日常任务,前前后后写了几十个配置项用于操作,当然,这也是五滴软件的局限性所致,要是五滴能够支持数据库,或许会好一些。但是,如果坚持不变,就不对了。当五滴更新到最新版本的时候,还有人坚持用着老版本,重复写着无数个配置,其精神可嘉,但是行为古屋认为不值得提倡。不能够因循守旧,要尝试着去用一些自己从来没有用到过的命令,可能通过一些命令,是能够取出网页源码中的中间文本,但是,也要去尝试着利用正则的方法去匹配看看。
一次浩大的网络聊天室的工程让古屋一下子成长了不少,也弥补了不少以前没有学到的知识。当他把游戏的软件放到某一个免费服务器上运行的时候,当一个叫做暮棠的曾经游戏里面朋友,登陆上了“游戏”,在聊天栏里面发出一声:“古屋,在吗?”的时候,古屋似乎看到了游戏重做的梦想曙光。
可惜,很快古屋就将完成的第一期游戏开发给搁置了。很多人或许会惋惜,但是现在考量起来,终止这种创作是正确的。因为,古屋的知识真的很单薄,如果当时当刻就沉浸在成绩的功劳簿上,他难以取得成功。这不是一款成熟的软件,只能作为一种代码进行分享。当古屋把游戏的一套源码发给五滴老大看的时候,老大就一语中的掐住了这东西的死穴:“你通过遍历数据库的方式,你的软件会不会很卡。”古屋第一次听过“遍历”两个词,真的觉得很新鲜,就有一种专业人士的味道。从字面上也能够理解遍历的含义,就是穷尽算法,常见的就是计次循环首那样一个都不放过。古屋后来想想觉得很有道理,通过计次循环首的方式去实现很多指令,现在十个客户都能够承受,当出现一百个甚至上千个的时候,估摸着那时候就会出现服务器卡死的现象了。
算了,放弃吧,古屋并没有灰心,就像是当年麦克阿瑟从菲律宾撤退时候的名句——“Ihaveescapeddanger,butIwillgoback!”,这是他一次勇敢的尝试,梦想还在继续,等他的知识补充到位了,他还是会继续!