半吊子
日历
网志分类
· 所有网志 (82)
站内搜索
友情链接
· 歪酷博客
· 我的歪酷 非非共享界

订阅 RSS

0069838

歪酷博客

« 上一篇: 【相声】阴差阳错 下一篇: 还有谁能认识他们? »
天地间有我 @ 2004-08-11 19:41

     昨天和她聊到KOF,她说她喜欢草雉京这位哥哥——呵呵,真巧!这是我唯一会用的一个人物。

     草雉除了拳拳带火之外就是他的大蛇雉,真华丽啊!华丽的代名词就是——真难发啊。想想当年,在街机房拍机,在PS屋用着力回馈都是一件很畅快的事情。99年第一次在电脑上看到模拟器的KOF时候,也想回顾一下当年34连击淋漓尽致的爽感……可是那时的模拟器让我觉得自己从来没有玩过KOF,这强大的心里阴影一直保留到现在。

     斗转星移,沧海桑田。经历了三个莫尔定律的今天,在寝室看着同学玩KOF而不敢上手的我,惊讶的发现现在的模拟器居然已经可以连续的转上两圈了。好厉害啊!家用机和街机使用的是操作手柄,操作手柄的按键使用的是电压叠加的原理,因此可以支持多个按键同时按下。这样就回出现我们敬爱的草雉哥哥的大绝招大蛇雉要经过后四分之一圈(↓↙←)回绕正半圈(↙↓↘→)加A这样复杂但联系的操作。但在手柄或操作杆这个连续是很容易实现的。

     而电脑上却不同,电脑上使用的是键盘,键盘和主机通过五芯电缆相连,这五跟线分别是电缆线,地线,复位线以及键盘数据线和键盘时钟线,PC机系列的键盘触电电路按16行×8列的矩阵来排列,用单片机Intel 8048来控制对键盘的扫描。按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,并通过键盘数据线将闭合键所对应的扫描码(8位)送往主机。

     刚才提到了一个新的名词——“扫描码”。当我们再键盘上“按下”或“放开”一个键时,如果键盘中断是允许的(以80X86为例就是21H端口第1位=0)就会产生一个类型9的中断,并转入BIOS的键盘中断处理程序。该处理程序从8255可编程外围接口芯片的输入端口60H读取一个字节,这个字节的低7位是键的扫描码。最高位位0或者为1,分别表示是“按下”状态还是“放开”状态。按下时。取得得字节称为通码,放开时取得得字节称为断码。如按下Esc键时产生一个通码为01H(00000001B),放开Esc键时产生一个断码为81H(10000001B)。键盘上每一个键都对应一个扫描码,从01(Esc)到83(Del),或从01H到53H,所以根据扫描码就能唯一地确定哪一个键改变了状态。现面给出一张每个键对应的扫描码(十进制)表,此表来自《IBM-PC汇编语言程序设计(第二版)》,原书扫描码是十六进制我把他转换过来了。

键名         扫描码    键名         扫描码    键名            扫描码
Esc              1         A                 30        F1                59
! OR 1          2         S                 31        F2                60
@ OR 2        3         D                 32        F3                61
# OR 3         4         F                 33        F4                62
$ OR 4         5         G                 34        F5                63
% OR 5        6         H                 35        F6                 64
^ OR 6         7         J                 36        F7                 65
& OR 7         8         K                 37        F8                  66
* OR 8          9         L                 38        F9                 67
( OR 9         10        : OR ;           39        F10                68
) OR 0         11       " OR '            40        F11               133
-                 12        ~ OR `         41        F12               134
=                13        Left Shift      42        Num lock         69
Back Space   14        \ OR |          43        Scroll Lock       70
Tab             15        Z                 44        Home OR 7      71
Q                16        X                 45        ↑ OR 8           72
W               17        C                 46        Pgup OR 9       73
E                18        V                 47        -(Gray)            74
R                19        B                 48        ← OR 4           75
T                20        N                49        Center OR 5     76
Y                21        M                50        → OR 6            77
U                22        < OR ,         51        +(Gray)            78
I                 23        > OR .         52        End OR 1         79
O                24        ? OR /         53        ↓ OR 2            80
P                25        Right Shift     54        Pgdn OR 3       81
{ OR [         26        PrtSc OR *    55        Ins OR 0           82
} OR ]         27        Alt               56        Del OR .           83
Enter          28        Space Bar      57


     应此键盘扫描码有一个和电压叠加原理的的游戏的手柄最大的不同就是,我们在键盘上怎么能发出连续的打出后四分之一圈(↓↙←)这样动作,如果打不出这样的动作……我的大蛇雉将永远保留在遥远的梦中。

     但为了下面故事的发生,我定义一个新的名词“关联动作”——就是连续读取到的两个键盘扫描码代表一个动作,比如连续读取到“←↓”他们的关联动作是“↙”。但由于扫描码的物理特性决定在同时按下←和↓两个按键的时候,可能会得到另外一种组合↓和←。因此,同一个关联动作会有两种组合。这也是符合游戏方法的,比如,绕圈和反绕圈时同样会碰到“↙”但正绕圈时候是:“←+↓”;反绕圈时是“↓+←”。


     以下故事实属虚构,如有雷同决不是巧合。

     无星,无月。

     伸手不见五指。 天与地浑然一体,一切的一切,全淹没在无边无际的黑暗中。

     只有在电芒闪耀的刹那,给大地带来瞬间的光明,雷声轰隆隆,似要把大地撕裂。

     一堆可乐,薯片之中。

     我——草雉京——当然我用的是键盘,我不用键盘下面的分析没法进了;

     你——不知火舞——照顾新人你就用手柄吧,这样我们的输入手段是不一样,不会产生干扰;
 
     奇妙的战斗就在这一刻开始……

     战斗一开始,你就步步紧逼,我只能步步后退——当然你是手柄,只要按十字键的“前”就可以了,但苦了我了。我在键盘上寻找到“←”键,我在不停的按着,此时键盘的扫描码得到了第一个的4BH(01001011B),4BH的最先进入一个判断,“是否是关联动作的一部分”。“←”当然是关联动作的以部分啊!立刻,电脑从键盘上读取第二个键。

     电脑惊呆了——读到的又是一个“←”。

     两个连续的“←”当然不是关联动作了。此时又出现一个问题了,两个连续的“←”是不是某一个必杀计的?或者是某个必杀计的一部分呢?来来来,去“必杀计列表”里面去比较一下。当然不能两个一块比,当然是按照顺序,第一个“←”先到必杀列表里面去比较,好像是一个某个必杀的前几个动作之一,好这个“←”先不执行。“←”进栈。并产生一个以“←”为第一动作的必杀列表,这时第二个“←”于产生的列表进行比较。电脑在焦急等待着结果……

     失望,失望,无尽的失望。

     没有这个必杀计啊!电脑顿时觉得自己上当受骗,先把栈中的那个“←”弹出并执行,再执行现在的这个“←”——就这样,你把我堂堂大燕国的公主,慕容家的小姐……错了错了,怎么跑《东邪西毒》去了……

     (N机之后,重新开始)

     我堂堂的草雉京,怎么说也是KOF主人公队的领班……可是……可是……可是……我面对的是如花似玉的不知火舞,面对着我心爱的女人,我怎么能下的去手?

     其实,最大的威胁来自那个拿着手柄的人啊!要是我一击大蛇雉之后,我将面对的是什么……不得而知……

     就在我举棋不定之时,只觉的耳边生风我大叫一声:“不好”。

     这个“不”字还没出嘴呢,就见你连续的两个反四分之一圈(↓↙←↓↙←)之后,眼生中透出了一丝暗喜和挑逗向我一笑,轻轻的点了一下A……只听“当”的一声……

     整个世界一片鲜红……

     血点点的从我嘴角渗出,躺在地上抽搐的我不敢相信这个事实——为什么?为什么?为什么你……难道是造物弄人,难道是有缘无份,难道是……我明明按了↑怎么会没有躲开你这一招“凤凰之舞 ”?

     你一步一步的走到我跟前……低头望着我……你眼中的是什么?——泪?

     你在告诉我,这是一场战争,不该手软!

     你在质问我,为什么不珍惜这最后的机会——“比武招亲”?

     握着手柄的你的手按向了“↓”……我知道了,这是我最后的机会,在你的“大轮风车落”开始之前有四分之一柱香的机会!在这之后,整个世界将发生变化!因为,我决定发一招“大蛇雉”虽然我这一生发过无数此的“大蛇雉”但这一个我认为是最麻烦的,因为,是在用键盘……

     “大轮风车落”将要碰到我的一刹那,我按动了的“←←←”又是连续的撤退!

     电脑已经莫名了,他不停的在说“算法已经设计好了,可以发必杀的,你在躲什么?”

     “你这个机器,懂什么?怎么能对你心爱的女人下手呢?我这不是在找机会吗!点到为止!”

     “我不管你对女人怎么样,我要试验算法啊!”

     “你好烦啊!!!”一个“轰斧阳”打向电脑…………

     “小……小……小必杀算法……测试成功……”

     等待,你在等待,你在等待我的一个漂亮的大蛇雉……从前你告诉我“我的意中人是个盖世英雄,有一天他会用大蛇雉打败我,然后娶我。”

     手,在键盘上摸索……

     键盘,在静静的等待……

     电脑,被一记“轰斧阳”打的已经时默不做声……

     “↓”我按了下去——扫描码立刻被接受,检索到,这是一个关联动作的一部分,接着读取第二个动作……

     “↓”——这是怎么回事?“↓↓”不是关联动作啊?怎么会这样?这事什么?没有时间让电脑去思考了,第一个“↓”先入栈……

     “←”——发现了,发现了,第二个读取的“↓”与刚刚读取的“←”是一个关联动作“↙”,电脑兴奋了,好样的,关联动作算法成功……

     “←”——这事什么?一个动作?入栈!栈中现在是什么“↓↙←”已经是一个连续的反四分之一圈了?与必杀列表比较啊!得到了,得到的新列表中前几个动作符合“↓↙←”只有一个,那就是“大蛇雉”。你在我的对面,等待着,我在这边努力着,我不能让你失望……我的手在继续……

     “↓”——怎么?怎么会是他?和前一个动作又如此大的跳跃,难道,难道放弃了“大蛇雉”。不,不,这不可能……还好……还好……这事第一个动作,可能和相关动作有关……

     “←”——好!是相关动作“↙”。虚惊一场……

     “↓”——太美妙了,回转的半圈已经开始了,我已经一步一步的靠近的“大蛇雉”……

     “↓→→”——连续的三个按键向栈中压了“↘→”两个动作,按照“大蛇雉”的规则,现在整个世界都在等待一个“A”……

     我望着你,你回应我的是急切的目光,我知道你一直在等着我,从一开始,我就知道知道你在等待着我的成功,你向我打出的每一拳都是在激励我,我要用这一“大蛇雉”来告诉你——我成功了!

     我按下了——“A”……1秒……2秒……3秒……你期待的眼神变得忧郁,我紧张的脸色变的尴尬……

     谁?这是谁在哼着小曲?——“电脑,这事怎么回事你解释清楚!”我大怒,向电脑吼着!

     “他妈的,谁让你刚才打我的?我叫你泡不成马子!”

     “你丫挺操性!老子不玩了……”

     “砰”的一声,合上笔记本电脑

     “宝宝,走,我们不理电脑了,我们游泳去!”

     两人消失在茫茫的夜色中……

最新评论


威尔森

2004-08-11 22:02

抢一


2004-08-11 22:22 网址: http://dev365.ycool.com/

写得很好! 鼓励一下 :)

有些想法可以和你共享:
1)数据结构用队列比用栈好,因为符合先进先出原则。(我是不是有点学究啊。。。)
2)状态图可能简化算法,也许还可以带来性能上的提高。
3)如果前N-1个都是关联动作的一部分,而最后一个迟迟未按,那么结果如何呢?给出的流程图已经基本说明大意了。不过具体的实现应该还有许多细节要考虑。格斗游戏可能对帧数要求不高,不过如果有华丽的背景或者要求复杂动画效果时,连续测试/等待键盘这样的动作可能需要多加考虑了。



不知火舞

2004-08-12 12:23

前面看不懂...
后面写的怪烂的...
早知道还是我自己动手写了...



草雉京

2004-08-12 13:17

早知到写的怪烂的

昨天不写了。。。。。。为了这篇东西。。。。。。

我复出了难以挽回的代价。。。。。。



阿宏

2004-08-13 17:45

吗的,看不懂,闪



2005-03-21 17:47

真有意思



2006-08-24 09:42

哥们,几年不见你真是越来越牛了,什么时候写一篇terry和mary的故事啊,别一个劲儿瞅着火舞不放


评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定