第59章:程序员的灵感
自“弃游”后,柳荣华时不时的要来怂恿一下孙轶民,试图再度拉他下水。 这日被孙轶民婉拒后,柳荣华又长吁短叹:“你不陪我玩,我还有什么乐趣?” 对此孙轶民的回应是:“游戏里你有老婆,妹妹,兄弟,还有部下,难道还少我一个人?” “别看我在游戏里面混的风生水起,可是在电脑前我总感觉有点孤独。我需要一个现实中的玩伴。”柳荣华无奈的说道。 说实话,孙轶民心里确实有那么一点想回到游戏世界的冲动。 那天何小泉透露关于神女无心的颜值一事,令他一直以来在内心保有一种强烈的好奇,他想去领略这个何小泉口中的“神女”级别女孩的风采。 他突然感觉很奇怪,之前一直对见网友之类的行为不屑一顾的自己,此刻竟然有了这种想法。如果被柳荣华得知这一点,自己一定会被笑话。 鉴于对何小泉的承诺,他并没有把何小泉对于神女的形象描述告知柳荣华。 尽管如此,当想到传说中的神女,他还是忍不住向柳荣华发起了这个话题:“假如说,你妹是个长得国色天香的女子,我该如何获得她的芳心?” “假如?你为何会如此假如?”柳荣华此时正以好奇的目光望着他。 “唉,只是闲着无聊说着玩玩嘛。”孙轶民掩饰道。 “好吧!如果真是这样的话,你得一步一步来。”柳荣华停顿了一下,吐了口烟,缓缓道,“首先很明显你们只能算网友,所以你想要追她就要从游戏世界做起。” “这自然没错,”孙轶民道:“只是该如何做呢?” “你首先要做的就是在她心目中重塑起良好的形象,这是第一步。” “你是说之前我在慕容的挑战面前认怂退游,让她看不起我么?”孙轶民问道。 “没错,就是这个意思,”柳荣华点头道,“在人类社会中女性大多属于弱势群体,因此她们的骨子里是认同并且崇尚强者的。这一点,不管是在现实中还是在虚拟的游戏世界都一样。现实中女性崇拜那些有能力有才华的成功人士,游戏中女孩子则认同具备高战力,有强大的帮会势力的游戏大神。所以你要把自己的战力搞上去,然后去挑战慕容并且击败他。从而建立自己的强者形象,让她对你刮目相看。这是泡妞的第一步。” “这……你明知道我没有这个经济能力,说了也是白说。动辄十几万的钱我可充不起。”孙轶民叹了口气,一脸失落。 “咦,你看起来好像很失落的样子。”柳荣华一脸惊异,“我们刚才讨论都是基于一个假设,就是说神女真的是你心目中的女神,但事实上这个可能性非常小,所以你根本不用操心这个。” 孙轶民才明白自己失态,讪笑一下道:“是啊,我就说着玩玩。” “充不充钱无所谓,回来陪我慢慢玩也行啊!”柳荣华哀求着。 “我再考虑下吧……”孙轶民敷衍了一句。 此刻的他心中虽然有了一点想要回到游戏的想法,但残酷的现实摆在眼前,他知道回去必然要面对慕容的挑衅。这一点柳荣华是帮不了他的。 另外,即便在游戏中挽回了形象,但要在现实中见到神女或许并不容易。 虽然神女是柳荣华妹妹,但毕竟这只是属于虚拟世界的一种人际关系。孙轶民记得在游戏世界神女跟他明确表示过,不见网友。而且柳荣华也曾经向她提起一次见面的邀请,但被拒绝了。 但其实能见到神女一面也不是他的终极目的。经过何小泉的口头描述,神女无心的“神女形象”已经深入他心中。此时除了想见她一面,满足好奇心之外,他更想要与她建立一种亲近的关系。 不管目的怎样,他要做的第一步,就是在她心目中重塑自己的形象。 弃游告别那一天,神女对孙轶民略带轻蔑的态度一直令他耿耿于怀,他想:如果要回到游戏,决不能因为同样的缘故再次被她看贬。他必须要挽回尊严,不再轻易被慕容羞辱,无需处处畏惧躲避他。为此,他必须具备足够的实力能与慕容分庭抗礼,甚至,在竞技场击败他。 但很明显,要做到这一点对孙轶民来说难如登天。即便他愿意付出那么多金钱以达到与慕容同等战力,但在战斗技术上,也很难对抗慕容神乎其技的操作手法。 而他也没有时间也像慕容那样,一天抽出几个小时去练键盘操作。这对于他这个忙碌上班族来说根本不现实。想到这,孙轶民内心生出一些落寞。 柳荣华以为他的要求令孙轶民感到了为难,便改口道:“行了,我不强迫你了,大程序员!不玩就不玩,随你。不过,我想请你帮个小忙。” “说吧,力所能及一定帮。”孙爽快答应道。 “这事对你来说肯定不难,我想要请你帮我做一个计算机软件。”柳荣华说。 孙轶民笑了笑,揶揄道:“你自己不就是计算机专业毕业的么,能把计算机理论用来解释恋爱哲学的人,编个小程序还需要别人帮忙?” “行了,你就别挖苦我。”柳荣华白了他一眼,说道,“你知道我学校学的东西都还给老师了。” “没事,反正卖衣服也用不上微机原理和c ,”孙轶民笑道,“说来听听,只要工程不是太大,我都可以免费帮你做。” “恰恰相反,工程小到不能再小。”柳荣华说,“我只需要一个小程序,要求如下:运行的时候窗口是隐藏的,当然我需要界面的时候还是可以用快捷键调出来。它的功能是用来记录电脑使用者打开过那些软件,以及记录键盘按键痕迹。” “你想要干什么?”程序员的敏感令孙轶民警觉的问。柳荣华这样的要求令他有点意外。 “别问那么多,你就说你能不能做得出来?”柳追问。 孙轶民思忖良久,答道:“你如果想把这个东西放在别人电脑上,想要窃取什么信息的话,恐怕是不实际的。大部分电脑都有安全软件,即便我给你做出来了,也会被秒杀掉。” “我不装别人电脑,我装自己电脑。我可以让安全软件默许它运行,这样总可以吧?”柳荣华问。 这令孙轶民很不解:“装自己电脑上有什么用?监控自己?难道你还有多重人格症状不成?” “我说的自己电脑是公司里的那些工作电脑。我现在怀疑员工上班不用功,趁我不在偷偷上网娱乐。我就想看看,他们都在电脑上做了什么?” “不是有监控吗?”孙轶民反问。 “监控有时候看不清楚。查起来也很累。”柳荣华道。 孙轶民陷入了沉思,良久后他拒绝了柳荣华:“要做这么一个东西对我来说完全没问题,但我不会帮你做。” “为何?”柳荣华不解问。 “我有我的职业操守,从不碰触黑客行为底线。”孙轶民的解释简单明了。 但柳荣华似乎仍不甘心:“我付你工钱,就算帮兄弟一个忙?” “那也不行。”孙轶民再次拒绝了他,语气斩钉截铁。此时他在怀疑,柳荣华的目的或许并非他所说的那么单纯。 柳荣华有点失望,哀叹道:“唉……只怪自己大学没有好好读书。” “唉,作为计算机专业的本科生,你居然对编程知识还处于一知半解的状态,可怜啊。”孙轶民挖苦了一句。 柳荣华白了一眼,叹了口气,自嘲道:“学到用时方很少啊,只怪当年读书的时候太贪玩。还是你觉悟高,半路改邪归正,弃暗投明,学得一身好手艺,不枉费4年青春。” 此时,孙轶民心中唯恐柳荣华对他存在误解,便拍了拍他肩膀,再三跟他重申了一下缘由:“不是我故意不帮你,是有些事我不能做。” 事实上,这确实是他的职业道德底线。他的技术水平完全可以胜任何计算机软件开发以及操作,但他之所以成为了程序员,而不是黑客,正是因为有这条底线存在于心中。 对话不了了之。 临睡前想起柳荣华白天的不情之请,突然心生好奇。尽管他不能答应柳荣华的要求,但职业习惯让他此刻还是在心底构思了一下这个软件功能的实现过程。 思来想去似乎只有一种实现方法,那就是采用一种很久以前听说的api函数,这函数似乎某一本旧书上出现过,但他编了那么多年的程序,从未真正调用过。 孙轶民从床底拖出行李箱,拿出从老家带回来的几本计算机书籍开始翻阅,最终在那本老古董的书籍《windows程序设计》中找到了这个函数。 这本书的名称看起来极其普通,却是他的珍藏。只因这本书在市面上已经无迹可寻。尽管类似名字的计算机书籍书在市场上俯拾皆是,却唯独只有这一本,因作者讲解思路的细致独到而被孙轶民认可。并且书本内容涉及到了很多比较冷门的知识,是其他很多类似书籍上无法见到的。其中就包括今天他要找的这个“钩子函数”。 他温习了一遍:这个函数的作用其实是为了截获指定一个线程的输入消息,比如键盘鼠标消息,截获之后,程序员可以分析该消息中包含的内容,比如按键消息中包含的键盘上哪一个键被按下的信息。分析完毕你还可以任意处理它:你可以把消息原样返还给原有线程,或者把消息做修改后返还,甚至你也可以拦截该消息——不予返还。【请到17К阅读㊣版】 这令孙轶民疑惑:微软为何要安排这样一个api函数供开发者调用?这似乎完全没有必要,而且引起了一定的安全风险。 做了这么多年的程序员,他还是第一次在构思过程中运用到了这个函数。 作者在举例说明这个函数如何使用的时候,顺便提到了另一个发送虚拟窗口消息的api函数sendmessage(),这引起了他的一点兴趣。而这个函数,他在多年的编程生涯中,同样一次都没有用过。 看着书上的函数原型与简介,孙轶民脑海突然闪过一丝灵感。这灵感宛如流星划过天幕般,在一瞬间,点亮了他思绪的夜空。 他想起之前何小泉跟他讲解的霸王pk御冰的制胜要诀,在于操作手速要到达风驰电掣的地步。而这种操作速度,人肉是几乎不可能做到的,但是如果可以用程序代替人手,发送虚拟按键到游戏窗口,并且用程序代替人脑,获取对方角色的状态数据在并且瞬间做出判断。那么是有可能实现这样的战斗速度的。 如果能设计出这样的辅助程序出来。就可以在战力平等的情况下,战胜那个慕容(秋心),从而在游戏挽回面子。然后,他就可以无障碍的继续陪柳荣华愉快的游戏了,也可以理直气壮的去追逐那个神女无心,根本不用怕慕容挑衅。 说干就干,随意民重新从床上爬起来,在电脑上打开vc60。他耗费了一整夜时间编写与测试,成功实现了用程序代替人手模拟按键的功能。但是问题是:这并必能解决终极问题——自动战斗。 因为这个功能只是单向的传输按键信息,虽然可以提高按键速度,但是没有给战斗过程赋予任何策略性。比如说,程序并不能在战斗过程中判断自己的角色有没有受到控制,以及受到了敌方哪一种控制技能的作用,从而决定要不要,以及要使用哪一种解控技能脱身。以及在决定使用某一技能之前,需要先确定这个技能当前正处于冷却完成状态——否则即便按下了按键也无法施放。再进一步说,程序在战斗过程中需要判断对手的各种状态,从而做出自己的战斗决策。 说白了,当前问题的关键在于没有数据可以判断从而做出战斗决策。这些数据包括诸如角色自身以及对手的生命值,能量值剩余量,某一技能的冷却与否,角色自身的增益状态与负面状态等等。 而这些数据与状态如何获取呢?这是个问题。 夜已深。孙轶民打算入睡,明天再继续思考与解决这个问题。 但满脑子的兴奋让他一整夜都没怎么睡好。