第59章:程序员的灵感

    第59章:程序员的灵感 (第3/3页)

    对话不了了之。

    临睡前想起柳荣华白天的不情之请,突然心生好奇。尽管他不能答应柳荣华的要求,但职业习惯让他此刻还是在心底构思了一下这个软件功能的实现过程。

    思来想去似乎只有一种实现方法,那就是采用一种很久以前听说的API函数,这函数似乎某一本旧书上出现过,但他编了那么多年的程序,从未真正调用过。

    孙轶民从床底拖出行李箱,拿出从老家带回来的几本计算机书籍开始翻阅,最终在那本老古董的书籍《Wi

    dows程序设计》中找到了这个函数。

    这本书的名称看起来极其普通,却是他的珍藏。只因这本书在市面上已经无迹可寻。尽管类似名字的计算机书籍书在市场上俯拾皆是,却唯独只有这一本,因作者讲解思路的细致独到而被孙轶民认可。并且书本内容涉及到了很多比较冷门的知识,是其他很多类似书籍上无法见到的。其中就包括今天他要找的这个“钩子函数”。

    他温习了一遍:这个函数的作用其实是为了截获指定一个线程的输入消息,比如键盘鼠标消息,截获之后,程序员可以分析该消息中包含的内容,比如按键消息中包含的键盘上哪一个键被按下的信息。分析完毕你还可以任意处理它:你可以把消息原样返还给原有线程,或者把消息做修改后返还,甚至你也可以拦截该消息——不予返还。【请到①⑦К阅读㊣版】

    这令孙轶民疑惑:微软为何要安排这样一个API函数供开发者调用?这似乎完全没有必要,而且引起了一定的安全风险。

    做了这么多年的程序员,他还是第一次在构思过程中运用到了这个函数。

    作者在举例说明这个函数如何使用的时候,顺便提到了另一个发送虚拟窗口消息的API函数SENDMESSAGE(),这引起了他的一点兴趣。而这个函数,他在多年的编程生涯中,同样一次都没有用过。

    看着书上的函数原型与简介,孙轶民脑海突然闪过一丝灵感。这灵感宛如流星划过天幕般,在一瞬间,点亮了他思绪的夜空。

    他想起之前何小泉跟他讲解的霸王PK御冰的制胜要诀,在于操作手速要到达风驰电掣的地步。而这种操作速度,人肉是几乎不可能做到的,但是如果可以用程序代替人手,发送虚拟按键到游戏窗口,并且用程序代替人脑,获取对方角色的状态数据在并且瞬间做出判断。那么是有可能实现这样的战斗速度的。

    如果能设计出这样的辅助程序出来。就可以在战力平等的情况下,战胜那个慕容(秋心),从而在游戏挽回面子。然后,他就可以无障碍的继续陪柳荣华愉快的游戏了,也可以理直气壮的去追逐那个神女无心,根本不用怕慕容挑衅。

    说干就干,随意民重新从床上爬起来,在电脑上打开VC60。他耗费了一整夜时间编写与测试,成功实现了用程序代替人手模拟按键的功能。但是问题是:这并必能解决终极问题——自动战斗。

    因为这个功能只是单向的传输按键信息,虽然可以提高按键速度,但是没有给战斗过程赋予任何策略性。比如说,程序并不能在战斗过程中判断自己的角色有没有受到控制,以及受到了敌方哪一种控制技能的作用,从而决定要不要,以及要使用哪一种解控技能脱身。以及在决定使用某一技能之前,需要先确定这个技能当前正处于冷却完成状态——否则即便按下了按键也无法施放。再进一步说,程序在战斗过程中需要判断对手的各种状态,从而做出自己的战斗决策。

    说白了,当前问题的关键在于没有数据可以判断从而做出战斗决策。这些数据包括诸如角色自身以及对手的生命值,能量值剩余量,某一技能的冷却与否,角色自身的增益状态与负面状态等等。

    而这些数据与状态如何获取呢?这是个问题。

    夜已深。孙轶民打算入睡,明天再继续思考与解决这个问题。

    但满脑子的兴奋让他一整夜都没怎么睡好。