Movie 版 (精华区)
发信人: tomey (全世界都在等着你一个人), 信区: Movie
标 题: 牛人解构matrix(含剧情)(zz)
发信站: BBS 水木清华站 (Wed Nov 12 00:47:30 2003), 转信
自己写了一个Matrix整个故事顺序的发展过程。
主要根据电影1,2,3和AniMatrix。
完全是自己的理解,我个人觉得解释的还是比较清楚的。
/**
*
* The Story of Matrix - Matrix.java
*
* @author Artwalker@88, Zhejiang University
*/
import System.Matrix.*
public class Matrix { // Matrix 程序
public Matrix(TheOne one1, Trinity tri1, Morphes mor1) {
// Matrix的构造函数,建立新的Matrix世界
}
public Run() {
// Matrix正常运行函数,这个程序函数非常复杂,其中包括Matrix世界的运行和维护
。
// 但是这个程序中设计了功能,就是让Thinity和Morphe程序发生异常,然后被Zion
中
// 的人类把他们带出Matrix。然后他们就可以去寻找The One了。
// 并且,Oracle把自己的思想植入Matrix,化作一个Oracle,然后用来引导和The O
ne
// 发生关系的一系列人,包括Thinity,Morphe和Niobe等等。
}
public Destroy { // 销毁这个版本的Matrix
}
public Loop() { // Matrix程序的主函数,它执行一个循环过程
While(run() && mor1.findNeo()) {
//Morphes程序的主要任务就是找到The One。
//一旦找到Neo,Matrix就开始进入升级阶段。
a.attackZion();
// 首先Architect调用了攻击Zion程序
// 这个程序不是控制Matrix的,而是通过source来控制机器章鱼等来攻击Zion
o.guideNeo();
// Oracle调用引导The One程序。她通过和The One说话让他作出一系
// 列举动,最终成功转变为The One, 然后去升级Matrix
one1.active();
// The One被激活,具有The One的超能力
one1.saveWorld();
// 表面上看是The One拯救人类和Zion的程序,其实就是Update
// Matrix的程序
}
this.Destroy(); //一次Matrix循环结束
}
}
public class TheMatrixStory {
public static void main(String[] args) {
World w = new World(); // 上帝创造世界
Human h = new Human(); // 上帝创造人类
while(h.Develop().getTechLevel() == Level1) {
// 当科技发展到很高的一个级别,这里假定为level1
Robot r = h.CreateRobot(); //制造机器人
while(r.Develop().getAILevel() == Level2) {
// 当机器人的AI水平达到某一个值,假定为level2
// 机器人将会必然的发生叛变
r.rebell(h); //机器人叛变人类
while(w.fight(r,h)) {
// 返回1,表示当机器人打败人类
h.destroy(w); //人类污染了天空
r.control(h); //机器人控制了人类
r.research(h); //机器人研究人类结构
r.grow(h); //机器人种植人类以得到能量
source s = r.CreateSource();
//机器人制造了Source
Architect a = r.CreateArchitect(s);
//机器人编写了Architect程序,放在source里面
Matrix m1 = a.CreateMatrix();
//Architect编写了Matrix程序,他好比一个大型互动游戏
a.plugMatrix(h, m1);
//Architect将人类都plug到Matrix里面
while(!m1.run()) {
// 当Matrix一代因为太完美而挂掉以后
Zion z1 = r.CreateZion();
// 机器人建造了Zion,把一部分思维异常的人从Matrix里面拿出来,
// 放到Zion。不过这里的Zion不是程序哦,是真实存在的
Oracle o = r.CreateOracle();
// 同时,机器人编写了一个Oracle来帮助Architect共同实现更好的
// Matrix。其中,Architect主要负责理性的平衡。而Oracle则加入
// 了一些非理性的东西。Oracle说过,她要break这种平衡,这样的
// Matrix才会更加真实
TheOne one1 = o.CreateTheOne();
// Oracle编写了一个特殊的The One程序,用来升级Matrix
// 不过这个程序非常特殊,其他的程序都只能在Matrix中
// 控制人的大脑,而The One程序完全修改了被选为The One
// 的人的大脑。但是,为了让the one显得更加真实,也就
// 是为了不让Zion中的人类发现他们花了很多力气找到的
// The One其实只是为了毁灭Zion而升级Matrix。Oracle巧妙
// 给The One添加了激活程序。只有经过激活,The One才会
// 变成The One,否则只是个技术高超的黑客而已。
Trinity tri1 = o.CreateTrinity();
// 同时,为了帮助The One激活,以及让The One顺利的完成
// 升级任务,Oracle写了一个比较特殊的Trinity程序,
// 她和The One一样,已经被修改大脑。
Morphes mor1 = o.CreateMorphes();
// 为了能够顺利的找到The One, 完成Matrix升级这个任务,
// Oracle还设计了一个一个Morphes程序,这个程序的特点
// 是完全相信The One的存在,并且拼命去找The One,如果
// 没有这个程序,那么Matrix根本就无法完成升级。
// 他和Trinity一样,也被修改了大脑,所以才会如此执着的
// 去寻找The One。
Agent smith1 = o.CreateSmith();
// 以Smith为代表的Agent程序也是来帮助升级的。
// 在前几代Matrix中,它没有什么特殊的。
Matrix m2 = a.rebuildMatrix(one1, tri1, mor1);
// Architect重写了matrix,第2版和第1版有显著的差异,
// 但和后面的3,4,5版几乎一样,只是做了一些bug的升级。
// 这些版本的Matrix里面传入了Trinity,Morphes和The One的程序。
m2.Loop();
// Matrix的主循环函数
// 下面3,4,5代的Matrix的建立过程都是下面这样:
Zion z2 = one1.CreateZion();
// 这个过程和第2代Matrix不一样,因为3,4,5代的Zion都是
// 由前一代的The One建立的。在Zion建立后,老的The One是应该
// 被销毁的,但是因为The One程序异常强大(后来和Neo一样强大
// 的Smith连机器大帝都害怕它),所以很多时候也无法销毁,比如
// 那个法国人就是第一代的The One。至于他为什么具有修改代码的
// 能力就不奇怪了。而且他也知道Oracle是利用了他来升级Matrix,
// 所以他恨Oracle,总是想把她干掉。
TheOne one2 = o.CreateTheOne();
Trinity tri2 = o.CreateTrinity();
Morphes mor2 = o.CreateMorphes();
Agent smith2 = o.CreateSmith();
Matrix m3 = a.rebuildMatrix(one2, tri2, mor2);
// ... 就这样下去,值到第5代的Matrix毁灭,Oracle和Architect
// 准备建立第6代的Matrix。不过这个时候Oracle的思想发生了变化,
// 她已经开始厌倦这个无尽的升级过程,并且她自己也慢慢产生了人
// 类的感情。她希望帮助人类和机器世界达到和平。但这一切都不能
// 被别人知道,比如Architect。否则计划就泡汤了。
// 所以Oracle设计了一个更加巧妙的程序,对The One进行了升级,
// 使他具有了完整的人类情感,新的The One叫做Neo。并且Oracle还
// 修改了Smith的代码,使他成为一个不一样的Smith,只有联合使用
// Smith和Neo才能达到世界和平的目的。而且这是个非常危险的赌
// 注。一但失败,Oracle连自己的命都搭上去了,而且整个世界都要被
// Smith控制。不过Oracle很聪明的在Neo和Smith的代码中设计了后门,
// 一但Neo进入Smith体内,Smith就会爆炸毁灭。
TheOne neo = o.CreateDifferentTheOne();
// 建立了一个不一样的neo
Agent smith = o.CreateDeifferentSmith();
// 建立了一个不一样的Smith,他添加了很多Neo的代码
// 而且有和Neo一样的激活程序,一旦死亡就会重生并且变成无敌牛人
Trinity tri5 = o.CreateTrinity();
Morphes mor5 = o.CreateMorphes();
//Trinity和Morphes基本没有变化
Matrix m6 = a.rebuildMatrix(neo, tri5, mor5, smith);
// 第六代Matrix中使用了新的Neo程序,并且加入了Smith这个特殊程序
// 但是这一切对于Oracle以外的所有人看来都是和前几代一样的。连那
// 个法国人也是这么认为。所以法国人要阻止Neo去升级系统,他不
// 希望自己的悲剧在Neo身上重演。不过这件事情可能还有一个人知道,
// 那就是Seraph。Seraph其实也曾经是The One。因为他的战斗力是和
// Neo一个档次的。而且Seraph在第三集对Smith说,我曾经打败过你。
// 只有The One才能打败Agent,所以Seraph有9成可能是某一代的The
// One。他一开始也和法国人一样,痛恨Oracle,不过他后来知道了
// Oracle在第六代Matrix的计划,所以离开了法国人,而去保护Oracle。
// 他希望Oracle的新计划能够实现。
m6.Loop();
// 在第六代Matrix中,一切都和以前一样正常运行。
// Trinity和Morphes还是被Oracle和Architect利用的玩偶。
// 他们到处寻找Neo。希望能够拯救世界。
// Oracle通过和他们的对话,使得他们深Neo就是The One。
// 而Oracle一开始和Neo说的每一句话都非常隐讳。比如Oracle并没有和
// Neo说你是不是The One,她只是说你自己心理清楚,然后又说Morphes
// 好可怜啊...这样让Neo误以为自己并不是The One。但是这样说起来,
// Oracle也没有骗过Neo,好高明的骗人技巧啊.... :)
// Neo以为自己不是The One,所以才去救Morphes。这样就会被smith
// 杀死,然后才能被激活。然后Neo再杀死smith,smith也被激活了。
// 这一代的smith身上,Oracle添加了一个非常可怕的功能,就是能够
// 入侵别的程序代码,甚至Oracle和Neo!!
// 当然,前面说过,Smith只要入侵了Neo,他们就会爆炸。而他并没有
// 意识到这个问题。不过后来Neo意识到了,这个后面再解释。
// Neo还是和原来一样去完成他的升级任务。而Smith被重新设计后他的
// 主要目的就是干掉Neo。当然,更深层的目的是为了世界和平,不过
// Smith和Neo都不知道。虽然Neo最后明白了这个道理。
// Neo和以前几代一样,经过重重困难,找到keymaker。这里说一下法国
// 人为什么要把keymaker藏起来,其实他的目的很简单,他不希望Neo和
// 自己一样被Oracle玩弄了。另外还有一个目的,他要试试Neo的实力,
// 以及通过打斗帮助Neo升级。感觉就像玩RPG,主人公总是要不断练功
// 才能升级的。总之,法国人其实是在帮助Neo。
// 因为很显然,他没有伤害Neo的意思,否则以他第一代The One的身份,
// 完全可以和Neo打。而且估计没有升级的Neo还打不过法国人。
// 在经过一系列战斗后,Neo已经变的更强了,然后去找Architect谈判。
// Architect还是和以前一样,通过说话要逼着Neo去升级Matrix。这里
// 有句话很经典,中文意思说白了就是:往往选择只是有权利的人用来
// 骗人的,他提供了N个选项,但其中N-1个明显是错的。所以,人类所
// 谓的选择权其实也只是自欺欺人的。因为包括Neo,Thinity,
// Morhpes和Smith这些在内的所有人,都是Oracle和Architect设计的程
// 序的一部分,他们只是在执行程序,而且他们自己都完全不知道自己
// 被耍了。好可悲...
// 他们所有的选择,都是别人教他们的,都是设计好的。
// 联系到当今现实社会,sigh...
// 不过,Architect完全没有想到Oracle对Neo做了修改。
// Neo因为有了正常的人类情感,而不仅仅是个救世主的角色
// 所以他选择了去救Thinity。这让Architect很郁闷。
// 同时,Neo通过和Architect的对话,已经大概明白了自己的身份和
// 作用。最起码,他知道自己是个非常不一样的程序。因为他其实是和
// Matrix这样的程序是平起平坐的,所以他可以自由修改Matrix的代码,
// 可以在其中具有超能力。而且,在这个版本的Neo中,Oracle给Neo添
// 加了来自source的代码,或者是Oracle本身的一些代码。这样他就有
// 直接控制真实世界中机器人的能力。因为Oracle是有这种能力的
// 他可以控制机器章鱼去攻击Zion。其实在第一集里面,Smith这些
// Agent就已经表现过这种能力了,不过Agent是把命令机器章鱼的调
// 用发给Oracle或者Architect,然后由他们2人中的一个去指挥机器
// 章鱼。而Agent是不可能有这种直接控制机器章鱼的能力的,他们
// 的权限太低了。
// 说远了,Neo已经认识到自己可以直接调用source的部分代码,所以他
// 再也不怕机器章鱼了,所以在第二集的最后Neo可以出手制止机器章鱼
// 的攻击。但是第一次使用source的API的Neo, 因为使用不当,被作为
// 异常抛出, 就好比try catch throw。那个mobil Ave的火车站是个专
// 门处理异常程序的地方。它当然不属于Matrix的一部分。那个小女孩
// 和Neo一样,也是系统抛出的异常程序。因为那个小女孩被称为没有目
// 的的程序,而Smith一句很经典的话是:every program has its
// prpose。火车人就是用来处理异常的程序了,它可以把异常程序代到
// Matrix当中,教给法国人处理。或者就是被Oracle拿去了。
// 因为在Matrix中,只有法国人和Oracle是有这种修改代码的权限的。
// 因为第3部国内电影院版本明显剪掉了一部分内容,所以暂时无法猜测
// 具体的含义是什么。但是可以知道,是为了通过法国人帮助Neo升级。
// 具体的过程我就不讨论了,只说说一下结果是Neo通过各种对话,又对
// 自己的使命有了新的认识。
// 但是Neo显然还有很多不明白的地方,所以他一定要去找Oracle。
// Oracle又很隐讳的跟Neo说了一些话,其实已经暗示了Neo要怎么做。
// 其中最重要的一句话就是:Everything has a beginning has its
// end.具体怎么重要最后会说。
// 接下来的发展就如大部分观众看到的那样,很好理解。
// 小女孩,Seraph和Oracle都被Smith吃了。从此Smith具有了无比强
// 大的能力。不过这个时候,我已经意识到导演两兄弟绝对是个不折
// 不扣的《七龙珠》迷。这种吃了人然后增长能力的做法完全就是
// 沙鲁的翻版么... 直到最后的大决战,我更加坚定了自己的想法,
// smith VS neo 绝对就是 贝吉塔 VS 孙悟空的copy.
// 接下来就是宏伟壮观的Zion保卫战,Noibe开飞船是多么多么牛X...
// Neo经过前面在Mobil Eva和法国人,Oracle的综合教育,他已经知道
// 了这个事情的解决方法。于是他决定去找machine tow谈判。
// 另一方面Smith占领了Bain的思想,说明了Smith已经具有超越machine
// 控制的能力。他甚至可以修改人类的大脑。
// 这种能力只有Oracle,Architect和Machine Tow才具有
// 这样Smith就已经变的和Machine Tow一样强大。
// 所以Machine Tow会惧怕Smith。
// 不过毕竟在真实世界里,Neo的战斗能力稍微厉害一点,所以他可以
// 干掉Smith。而且当他的双目失明后,他的能力又进一步被激发
// 他已经可以感觉到所有电子设备的存在。
// 这有点像中国少林武术中的最高境界:用心眼看世界。
// 总之这里说的有点神奇,只能说Neo经过Oracle的修改,加上一次次
// 的升级,已经变得很牛了。他可以和整个机器人的世界链接。
// 这时,Smith超级强大,已经控制了整个Matrix,而且很可能进一步
// 威胁机器人的真实世界。于是Neo以此为要挟进行谈判。机器大帝没
// 办法,只能答应Neo的要求。
// 然后Neo就去和Smith进行超级赛亚人级别的战斗了。
// 不过Smith太过强大,连Neo也大不过他了。
// 但是,其实Oracle还是对Smith的身体有一部分的控制权
// 所以他在最关键的时候,借用Smith的嘴巴说出那句话:
// Everything has a beginning has its end.
// Neo立刻就想起来Oracle曾经对他的暗示。而且Oracle还和Neo说过,
// Smith被设计为Neo的负数,那么他们两个合在一起是什么呢?
// 显然 X + (-X) = 0 !
// 所以Neo那个时候终于明白了Oracle交给他的全部使命
// Neo不再反抗,而是任由Smith把自己吃掉。
// 当然,Neo和Smith的中合的效果就是2个人一起灭亡。
// 这也是Oracle早就设计好的。于是,Everything has a end.
// Neo和Smith的生命也都有了终了。
// 所有被Smith吃掉的人都恢复过来。人类也和机器人达成了和平。
// 也就是机器人不在玩弄人类,不停的升级Matrix。
// 而是让人类知道事情的全部真像,让人类选择活在Matrix还是Zion。
// 这时的Matrix虽然没有经过传统意义上的升级,却是从本质上进行
// 了升级。达到了稳定的第七版,也就是圣经所说的,上帝造物用了
// 7天,最后达到了稳定的版本。
// 这个新的Matrix里面,有了一个最大的改变:就是产生了一个没有
// 目的的程序,也就是那个小女孩。
// 于是,从此Oracle也无法完全控制Matrix,因为其中有了oracle都
// 无法预料的事情。所以,oracle最后只是说: I believe.
// Architect对Oracle说你玩了个危险的游戏,就是指Oracle偷偷修改
// 了Neo和Smith,甚至有意让smith吃掉Oracle自己以达到无比强大的
// 能力,直接对机器人产生威胁。
// 不过Oracle表现的很平静,一副一切尽在掌握的感觉。
// 整个这部戏的导演,其实就是Oracle!!
// 不过电影最后Oracle说,不知道这种和平能维持多久。
// 而Architect说,他不是人类。
// 其内含就是,机器是不会打破这个和平的,因为机器严格信守承诺。
// 但是,人类,却不知道什么时候会再犯老毛病....
Matrix m7 = m6.update();
w.update();
// Matrix升级到第7版。
// 整个世界也重新恢复平衡。
}
}
}
}
--
※ 修改:·tomey 于 Nov 12 00:47:52 修改本文·[FROM: 166.111.171.112]
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 172.16.9.14]
※ 修改:·hacker 於 11月12日12:50:11 修改本文·[FROM: 172.16.9.14]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:200.686毫秒