破解软件

破解软件,破解密码,破解工具,破解论坛,破解技术

黑客帝国编程教程(黑客如何编程)

本文目录一览:

黑客帝国尼奥之路

关于黑客技术

以下叙述内容全部是本人亲身体会的经验,如果对您有用,还请给我加点分,谢谢

我和百度Hi上几个朋友还有寝室里的同学坚持每天都去【落雪黑客基地】黑客技术也很好,

他们的服务器的访问速度为0.7秒,黑客技术也很好,很快的速度,一定会让你们学的更开行

这个黑客网站的技术教程相当全面,工具非常多,更新速度很快技术也很高

他们是2010年最强大的黑马论坛,这个才出来的黑马技术站挺适合我和百度HI上朋友学习

现在即将暑假道来,本论坛即将开放暑假清凉会员教程集,保证您爽的透底

(只有信誉非常好的网站才有资格与IT业龙头公司合作的)黑客技术也很好,

在里面可以学到安全防范技术,网站入侵检测技术,软件编程,软件破解,软件黑客修改,黑客攻击与防御等等诸多黑客攻防安全技术。黑客技术也很好,

论坛的热心高手也很多,让你真正零距离接触黑客,黑客技术也很好,

(他们论坛里面完全免费)

他们论坛现在没有任何收费性质的教学方式,全部都是 免费的,菜鸟学习的好地方,所以我让你们来这里学习。黑客技术也很好,

善意的提醒:不要乱选择黑客网站,现在骗子站很多,一不小心可能还会使你电脑中病毒.

也不要随便拜师,个人名义收徒弟的99%都是骗子,谨防上当受骗! ,黑客技术也很好,

请到落雪黑客联盟 里面有详细内容 ,黑客技术也很好,

落雪黑客联盟长期更新免费使用,黑客技术也很好,

落雪黑客联盟很多黑客高手,黑客黑客很多 我们可以在里面很多黑客黑客,黑客技术也很好,

落雪黑客联盟专注于菜鸟的学习,可以说大家一般来学都学的会,不是笨蛋就可以了

请在百度搜索 “落雪黑客联盟” 专业的黑客技术论坛.黑客技术也很好,

以下叙述内容全部是本人亲身体会的经验,如果对您有用,还请给我加点分,谢谢66

看懂黑客帝国要先搞懂的

matrix的第一集大家都说好看,因为它虽然有些晦涩,但几乎所有人都明白了机器控制人这个基本道理,可是到了黑客2,因为真正解释揭示电影主题和故事内容的东西都在大段打斗中间的冗长对话上(想必去电影院里看,只看一遍的人是不可能明白architect说的话的),很多人彻底不懂了,甚至有人说机器控制的也是机器,根本没有人.....我承认,这片子潜藏着很深的哲学原理和计算机知识,可是电影本身的故事不是那么难以理解,如果你没有看懂电影的故事本身,你在那里大谈哲学和计算机,难道不是很可笑的事情吗?

有时很恨电影里的打斗场面,它们太精彩太棒了,以至让我们无法再提起精神去倾听理解之后的那些大段的对话.

在过去的整整3天里,我重看了2遍的reloaded,重新听了里面的对话片断无数遍,甚至重新下看了黑客1,现在我觉得自己终于有些想法了,我将从电影的角色,故事,一些难点三个方面来试图讲明白这个故事.

写这个文章也是选在网上已经有dvd版本的matrix reloaded下载的时候,希望大家有空多看两遍,活动活动脑子.

大家往下看之前,我得声明一件事,黑客的第三集将在今年11月7日推出,它的结局那时会揭晓,我下面提到的东西,不少是我自己的看法和推想,可能和真正的结局不同,但我会列出电影里的情节来支持我的观点,所以就算你不同意,但希望能根据我说到的推理论据,重看几遍电影,静下来好好想想它,也许你还是有不同的看法,但这个过程中,你就能更多地享受到这个经典电影带给你的欢乐了.

最后,我得说,matrix这个系列的电影绝对是我看过最棒的电影,华丽的外表下是丝丝入扣的故事情节与博大精深的内涵. ===== 人物介绍 =====

//matrix里的人物的命名其实都是在暗示这个他们的命运和作用,以及目的.

neo:

被植入了程序的人,关于他名字的典故,我只听说了一种说法,one的另外一种排列,预示着他的使命.

morpheus:

墨菲斯,古希腊和罗马传说中的梦之王,是管睡觉的王hypnos的儿子,他给人类带来梦想.

trinity:

崔妮迪, 基督教的基本教义, 就是"三神一体", 说上帝可以被看成3个人, 先给出它在圣经里的定义, god the father, god the son,

god the spirit. 日后有机会可以详细讨论这个问题.

oracle:

那个女先知,程序.希腊宗教里负责把神的回答反馈给人类提问者.

seraph:

oracle的保镖(那个中国人),程序.六翼天使,他在天使里排行最高.负责保护高级的神.

merovingian:

那个控制keymaker,手下有一堆打手的家伙,程序. 这是以前法国一个叫merovech的国王建立的王朝的名字,

他的背景非常复杂,甚至据说是耶稣的传人,这里只能简单地说电影里他的家就是那个年代的法国城堡,墙上的兵器还有那些雕塑布置,都在衬托他的这个背景.

architect:

那个老头,写matrix的....他应该不算程序,算是机器了.这个词就是设计师的意思.

persephone:

前面这个法国人的老婆,好大的(.)(.)啊,程序(可惜~)....希腊传说里,她是宙斯和迪米特的女儿,后来被普鲁托绑架到地下城,成了城主的老婆,她开始一直试图逃脱,但后来因为她老公骗她吃石榴果(地下城里死人的食物)上瘾,使她每年都至少要在地下城里呆4个月.

她在第三集里也是个挺重要的角色啊.

zion:

锡安城,基督教的传说里,它只是一个城堡,是耶路撒冷的象征, 甚至在现今被当成以色列的别称. 一句话,避难的地方.

niobe:

奈奥比,孟菲斯以前的女朋友,现在也是一个战舰的船长. 希腊传说里,她的6个儿子和6个女儿都被阿波罗和阿特比斯杀死,因为她到处吹嘘自己很能生,说leto只有两个小孩(阿波罗和阿特比斯),

后来宙斯把她变成了哭泣的石头像.她的故事在enter the matrix这个电脑游戏里讲的比较清楚.

smith:

那个很cool的agent,一天到晚缠着neo打架.他的情况很复杂,在文章第三部分会详细讨论.

他的名字好像是很普通的,在古希腊传说中找不到这个名字的出处,但一个美国同学说圣经里有他的典故,我刚刚开始读相关段落,暂时没有什么可写的.

不过,相当震撼的是,在前面那个法国国王的历史典故里,他的王朝是终结在一个叫smith的人手里. ===== 故事介绍 =====

//说是介绍,但我也不想按顺序从头讲一遍,就把看电影的时候,眼睛能看到但不太能想明白的事情说一遍.

片子的开始带我们去了zion,那些从matrix里逃出来的人的避难所,里面已经有很多很多人了,但是请大家注意,我们看到的大多是黑人,亚洲人,拉丁美洲面孔,比较少白人,其实这是编剧对现状的一种嘲讽,他认为西方世界可能在物质上优于第三世界国家的人,但他们精神世界却相当匮乏,宁可陷在matrix里面享受机器给他们的富足,一句话,穷人比较好救出来.当后来他们去找那个法国人时,等电梯的一水白人,而且个个傻头傻脑.

此时的zion已经是大敌当前了,因为机器一方在拼命地往地心挖(zion就在地球中心),人类一方招回了自己的所有飞船.

里面的很多人依然相信那个传说,the one(neo)将带领他们打败机器,赢得战争,解放所有的人.除了孟菲斯,所有议会里的人也都相信,当然,也有不信的,比如负责守卫的lock.

探员smith的一个拷贝居然也能通过电话线,潜入了zion.

neo时刻被一个可怕的梦所困扰:崔妮迪从一个大厦中飞出,被一个干探开枪击中,她不停下坠......

neo收到了先知oracle送来的半个芯片,出发去找她,这次先知和第一集出现时完全不同了,那时她有点装神弄鬼的意思,总是用问题来回答neo的问题,而这次她很直接,甚至很爽快地承认了自己是程序,注意,这次她没有拿什么糖果让neo选了,而是直接拿出一个红的给neo吃.最后她,让neo出发去找keymaker.

我想从这里到neo见到architect之前的过程不用多做解释了,大家都看的明白,就一个小细节,那个法国人能编程修改matrix,他改出一块那个"发情蛋糕",那个女的吃了以后就高潮了,他后来也跟去洗手间.....这也是他老婆吃醋的原因.关于这个法国人,他老婆,以及他们说的话,我在下面"问题"一部分里中将详细讨论.

neo终于见到最后的architect,architect和他解释了the one,matrix,zion的作用和过去,原来最早的matrix在运行因为1%的人不肯受机器奴役,导致系统崩溃,设计师就提出zion的构想,让那些不听话的人去那里.

最后让neo选择是进入系统(the source),升级它(reload the

matrix),重建zion,让机器继续奴役人类,还是选择冒毁灭全部在matrix和zion里的人类的风险,去救崔妮迪.

neo选择了去救崔妮迪的那门,有人认为,那是因为他对崔妮迪的爱,使他做出这种选择,我觉得不然,因为设计师已经冷笑地说了,希望,人类最大的优点和弱点,neo和他前面的5个版本不同之处,不是因为他和崔妮迪之间有爱(片子中其他地方暗示了其实前面几个neo面临的选择都是一样的:人类的生存和崔妮迪的死活),这个neo与前任不同的地方在于他想明白了,自己选择拯救全人类,实际是把人类往被机器奴隶的深渊里推得更深了......所以他决定中止现在这个让机器升级的圈子.

他们的飞船被炸了,从neo上面做那个选择之后,机器的计划全部落空,先知(oracle)说的"理解选择"中的选择已经不是她说的那个选择了.而且按照机器的安排,此时飞船应该是唯一有从zion出来的人,所以炸掉,再毁灭zion,完成清洗过程.

neo用手挡住了机器章鱼,自己也晕过去,他们被从zion里派出来一艘飞船给救了,船上还有另外一个幸存者,带有smith拷贝的kane.他也晕倒在船上......

===== 问题 ======

//这个部分可能有人有不同的看法,可以拿出理由来讨论,扔东西的就不要了.

--- 到底是谁在骗人?谁在说真话? ---

这是个首要问题,因为下面所有对故事的分析都是建立在电影人物的对话上面的,如果不能确定人物是否在说真话,分析推理无从谈起.

这是聪明人拍出来的聪明电影,仔细品位他们的对话真的是种享受,一个坏人(程序),或者一个好人(程序)在碰到他(它)不想说的事情时会巧妙地绕开话题,或者用一种心理暗示陷阱的方式来陈述.

举个例子,孟菲斯一直说先知告诉他,the one就是拯救他们,打败机器的人,他坚信这个.但是如果回头去找oracle(先知)的原话,她说的是,当the

one返回the

source的时候,战争就结束了.她没有骗人,战争是结束了,zion被摧毁,matrix升级,机器更强大了.是孟菲斯的人性的弱点促使他推论出他希望的那个结局,战争结束,人类获胜,并坚信不疑.但是他忘了,战争有两方,可能是机器获胜.

电影里没有一个人(程序)在骗人或者说谎,他们(它们)只有话说不全的时候. --- zion是另外一个matrix吗? ---

我看第一遍时,我也认为锡安城就是另外一个matrix,电影里这些看起来像英雄的人其实都被骗了.但随着我多看了几遍,我愈发坚定了zion绝对是真实世界的看法.

1.从机器攻打zion的方式,可以看出它们是在往地心挖洞,而且的确是派出很多东西在折腾,我不是说我们看到的这些东西就一定是真的,我的意思是如果zion也是程序,机器用一个delete就可以了.

有人会说,它们这样是给人类一个假像,认为自己还活在真实世界里,是经历了真正的战争才失败了,可是你别忘了机器是要毁灭zion,这也是它们在进攻前故意壮大声势,让zion所有的飞船都回去防守,其实是要一网打尽,所以这次战争后不会有活口,机器重建zion时,用的是重新从matrix里选的23个人.

2.architect的话,那些以为zion也是matrix的人,绝对只看了一遍,而且没有听懂这个设计师的话,他在讲到为什么要建立zion的原因时是这样解释的,最早的系统很完美,但也就是因为太完美了,所以人类无法接受,总有人反抗机器.所以他设计了"choice体制",就是说让人觉得自己是在做选择,比如说你生活在matrix中,早上起来你觉得自己现在可以马上去开电视,或者不开,这就是一个选择,是由你自己决定的,但那个法国人和先知都说了,所谓的选择,根本是种假象,是机器造出来骗人在matrix继续生活下去的.先知说的是,你已经做出了选择,现在你只是去理解你为什么要去选择(可是neo根本还不知道他面对的选择是什么呢,所以说所谓选择根本就是骗人的).法国人说的更直接,这个世界只有因果,没有选择.

举个片子里的例子吧,关于崔妮迪的死,她已经答应了neo不进matrix,而按照他们事先的破坏电力的计划,事情应该会进行得很顺利的,崔妮迪不用进入matrix,但这样neo还选择什么呢,所以机器开始编程了,首先他们扔炸弹把负责停止备用电力系统的那队人的飞船干掉,那组人也就全部完蛋了,此时电力启动,大楼的炸弹要爆炸,崔妮迪只能进去停止备用电力系统,看起来是她自己选择去救neo的,但大家都看得出,她__别无选择!!__

然后,机器只要在电梯里放入负责最后终结崔妮迪的干探就可以了,这就是机器用来骗人的"选择机制".

设计师说了,99%的人当机器给他们"选择"时,他们就接受机器了,可是剩下的那些人因为各种各样的原因,依然不肯就范,影响系统的稳定,所以他在真实世界里建立了zion,让这些天生反骨的人都去了那里,他用the

one来研究这些人,升级matrix系统,可是zion不能太强大,所以当它发展到一定程度时,机器就让the one返回the

source,提交自己采集的信息,然后毁灭zion,重新启动matrix,并由the one到matrix里选人重建zion,开始下一个循环.

那些1%的人不接受机器给的matrix,那难道说他们就肯接受另外一个机器给的zion

matrix?如果是这样,matrix早就升级了,architect就不会有烦恼了.

3.片子本身,请相信我,这部片子的导演绝对没有那么肤浅和无聊,他探讨的是人和机器的关系,不是机器的未来.如果你看到了稻草,那是因为自己脑子里是稻草. --- neo是人还是程序? 兼谈他与smith的关系. ---

1.片子里所有的程序看到neo时,都强调了you are a

human.包括一路打架的smith,先知,法国人,设计师,它们的谈话都提到了这点,反复强调.连那个锡安城里的老头议员听到neo说睡不好的时候,都说,那说明你还是人类啊.

在与architect的那段对话中,设计师张口闭口都是说"你们人类",既然这些了解真正秘密的程序都这么说,可以断定neo是个人.

2.为了说下面的观点,得先说说密探smith了.

表面上看,他的每次出场都是来和neo打架的,但是我得说他每次出场是为了提升自己和neo的能力,他们就像双胞胎,互相在copy对方的代码,这也是两个人打架的招式越来越接近,而且smith对neo说,我们的目的一样的,是这个共同的目的让我们连接在一起......这里的共同目的是什么呢?

摆脱机器的控制!

smith在第一集里就表达了对锡安城的向往,他向孟菲斯要锡安城的主机密码,因为他想进去,他一个程序,为什么要去锡安城?你可以觉得他是为了消灭那些锡安城的人,不对,因为之前系统里就从来没有试图往锡安城里送过程序,那些密探也只能在matrix里追踪他们的目标,每次当neo他们接通电话,逃出matrix的时候,他们就安全了.smith在第一集里说,,世界上只有人类,象病毒一样,喜欢侵占别人的地方,然后耗尽资源,第二集里他就变成了名副其实的病毒,因为他明白只有人,而不是程序可以摆脱机器的控制,所以他开始试图让自己变成人......

第二集开始,smith就把自己的耳塞摘下给了neo,传达了一个很明确的信息,我回来了,而且我不再是干探并不再受机器控制了.在第一集,当他和孟菲斯讲解人类病毒论,他还把自己的耳塞摘下,这也已经给第二集里他的变化埋下伏笔.

从第一集开始,表面上,neo就经常在学习smith的打架招式,从系统实质来说,也是在研究学习smith的代码,这就是在第二集中,他被成千上万smith围攻时,他为什么不开始就用"超人放屁"那招飞走,那打斗可不是打给观众看的,他是在解读新的smith的新功能,这也能解释为什么他能在第二集的最后挡住电子章鱼.

smith可以把自己copy在人身上,进入zion的世界,这时他就是程序和人的混合体,那时有一个镜头,他切了自己的手,那是他第一次在人的身上,他要体验一下痛的感觉.他能将自己程序功能带到zion,neo就是从他身上学到的这个本事,所以neo不管在zion还是matrix里都有对付机器的能力了,他在和smith打架时就学到了这个本领,但是从来没用过,被电子章鱼追杀的时候,他突然意识到自己的这个能力,但是是第一次运用,把自己的力量耗尽,所以晕倒了.所以smith晕倒,是因为他第一次使用人的能力,同样不熟练,所以他也耗尽体力了.

3.所以说,neo是带了程序的人,他原来是普通人,当被选中,植入the one程序后,他就变成了the

one,因为他的功能,是用来采集信息的,所以他的程序有极强的学习功能,这也是为什么他的本领越来越强.

题外话,那个六翼天使和neo打架,不是为了测试他是不是the one,而是想知道他现在的能力到了什么地步,也许甚至是传递一些能力给他.

求黑客帝国数字雨的制作方法

复制以下内容到记事本,另存为“黑客帝国数字雨.bat ”运行即可或再按Alt+Enter全屏!@echo %dbg% off

setlocal ENABLEDELAYEDEXPANSION

mode con cols=80 lines=30

clsset 退格=

set redtek=" "set end=0:start set /a end+=1 call :calc set /p=!setspaces! nulping /n 1 127.1nul set /p=%退格%nul set /p=%redtek:~1,79%nulecho. goto :start:calc if %end%==28 ( set /a end=0 cls set /a cols=!random:~0,2! echo ... 风力:!cols! ... if !cols! GTR 76 set cols=76 if !cols! LSS 2 set cols=2 set setspaces=!redtek:~1,%cols%!!random:~0,1! goto :eof )@echo off

mode con cols=80

color 02

for /f %%i in (test.txt) do set str_char=%%i

set str_blank=

setlocal enabledelayedexpansion:loop

:: 取随机位置上的字符

set /a num_char=1%random:~-1%%random:~0,1%-100

set char=!str_char:~-%num_char%,1!:: 设置随机长度的空格

set /a num_blank=1%random:~-1%%random:~0,1%-100

set blank=!str_blank:~0,%num_blank%!

echo.%blank%%char%

goto loop@echo off

mode con cols=80

set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^

set b=

setlocal enabledelayedexpansion

:a

set /a num=%random%%%92

set 字符=!a:~-%num%,1!

set/a c=%random%%%80

set 空格=!b:~-%c%!

echo %空格%^%字符%

goto a

@echo off

mode con cols=80 LINES=30

set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^

set b=

setlocal enabledelayedexpansion

:a

set /a num=%random%%%92

set 字符=!a:~-%num%,1!

set/a c=%random%%%80

set 空格=!b:~-%c%!

::echo. %空格%^%字符%set/a i+=1

rem 指针=i 尾指针=j

set/a j=i-30

set line%i%=%空格%^%字符%

FOR /L %%v IN (%i%,-1,%j%) DO echo.!line%%v!

::ping /n 127.1nul

goto a@echo off

::mode con cols=80

setlocal ENABLEDELAYEDEXPANSION

color 02goto BEGIN

goto :eof::function mt_rand "a" "b"

:mt_rand

::(

set a=%~1

set b=%~2

set /a _mt_rand=(!random!%%(%b%-%a%))+%a%

exit /b 0

::):BEGIN

::{--

SET iWidth=80

SET iDensity=6

SET sText="#$'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

SET sText=!sText:"=!

set /A iText=90-1for /l %%i in (1,1,%iWidth%) do (

set aDown%%i=0

):loop

for /l %%I in (1,1,%iWidth%) do (

set /a aDown%%I-=1

if !aDown%%I! LSS 0 (

call :mt_rand "0" "%iDensity%"set aArrow%%I=!_mt_rand!

call :mt_rand "10" "25"set aDown%%I=!_mt_rand!

)

if !aArrow%%I! EQU 1 (

call :mt_rand "0" "%iText%"(FOR %%M IN ("!_mt_rand!") DO SET aa=!sText:~%%~M,1!)

set /p=!aa!nul

) else (

set /p= nul

)

)

goto loop

::--}:exit

exit /b 0@echo off

setlocal ENABLEDELAYEDEXPANSION

color 02for /l %%i in (1,1,80) do (

set Down%%i=0

):loop

for /l %%j in (1,1,80) do (

set /a Down%%j-=1

if !down%%j! LSS 0 (

set /a Arrow%%j=!random!%%4

set /a Down%%j=!random!%%15+10

)

if "!Arrow%%j!" == "1" (

set /a chr=!random!%%2

set /p=!chr!nul

) else (

set /p= nul

)

)

goto loop

goto :eof@echo off

setlocal ENABLEDELAYEDEXPANSION

for /l %%i in (1,1,80) do (

set Down%%i=0

)for /l %%i in (0) do (

set line=

for /l %%j in (1,1,80) do (

set /a Down%%j-=1

call set x=!down%%j!

if !x! LSS 0 (

set /a Arrow%%j=!random!%%6

set /a Down%%j=!random!%%15+10

)

call set x=!Arrow%%j!

if "!x!" == "1" (

set line=!line!1

) else (set "line=!line! ")

)

call set /p=!line!nul

)[/code]

黑客帝国文字雨 flash 怎么制作

可用C语言编程来达到黑客文字雨的效果  。。。

效果如下:

代码如下,vc++编译通过 。。

#include windows.h

#define ID_TIMER    1

#define STRMAXLEN  25 //一个显示列的最大长度

#define STRMINLEN  8  //一个显示列的最小长度

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表

{

struct tagCharChain *prev; //链表的前个元素

TCHAR  ch;                  //一个显示列中的一个字符

struct tagCharChain *next; //链表的后个元素

}CharChain, *pCharChain;

typedef struct tagCharColumn

{

CharChain *head, *current, *point;

int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度

int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的

}CharColumn, *pCharColumn;

int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("matrix") ;

HWND            hwnd ;

MSG            msg ;

WNDCLASS    wndclass ;

wndclass.style            = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc      = WndProc ;

wndclass.cbClsExtra       = 0 ;

wndclass.cbWndExtra       = 0 ;

wndclass.hInstance        = hInstance ;

wndclass.hIcon            = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor          = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground    = (HBRUSH) GetStockObject (BLACK_BRUSH) ;

wndclass.lpszMenuName     = NULL ;

wndclass.lpszClassName    = szAppName ;

if(!RegisterClass (wndclass))

{

MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;

return 0;

}

hwnd = CreateWindow (szAppName, NULL,

WS_DLGFRAME | WS_THICKFRAME | WS_POPUP,

0, 0,

GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),

NULL, NULL, hInstance,

NULL) ;

ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示

UpdateWindow (hwnd) ;

ShowCursor(FALSE); //隐藏鼠标光标

srand ((int) GetCurrentTime ()) ; //初始化随机数发生器

while (GetMessage (msg, NULL, 0, 0))

{

TranslateMessage (msg) ;

DispatchMessage (msg) ;

}

ShowCursor(TRUE); //显示鼠标光标

return msg.wParam ;

}

TCHAR randomChar() //随机字符产生函数

{

return (TCHAR)(rand()%(126-33)+33); //33到126之间

}

int init(CharColumn *cc, int cyScreen, int x) //初始化

{

int j;

cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度

cc-x = x+3 ;        //显示列的开始显示的x坐标

cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标

cc-iMustStopTimes = rand()%6 ;

cc-iStopTimes    = 0 ;

cc-head = cc-current =

(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列

for(j=0; jcc-iStrLen-1; j++)

{

cc-current-prev = cc-point; //cc-point一个显示列的前个元素

cc-current-ch  = '\0';

cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素

cc-point          = cc-current++; //cc-point = cc-current; cc-current++;

}

cc-current-prev = cc-point; //最后一个节点

cc-current-ch  = '\0';

cc-current-next = cc-head;

cc-head-prev    = cc-current; //头节点的前一个为此链的最后一个元素

cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数

cc-head-ch = randomChar(); // 对链表头的 元素填充

return 0;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC          hdc ;

//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进

int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用

static  HDC hdcMem;

HFONT    hFont;

static  HBITMAP hBitmap;

static  int cxScreen, cyScreen; //屏幕的宽度 高度.

static  int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数

static  CharColumn *ccChain;

switch (message)

{

case WM_CREATE:

cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度

cyScreen = GetSystemMetrics(SM_CYSCREEN) ;

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

hdc = GetDC(hwnd);

hdcMem = CreateCompatibleDC(hdc);

hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);

SelectObject(hdcMem, hBitmap);

ReleaseDC(hwnd, hdc);

//创建字体

hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,

DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,

DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));

SelectObject(hdcMem, hFont);

DeleteObject (hFont) ;

SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明

iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数

ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));

for(i=0; iiColumnCount; i++)

{

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

return 0 ;

case WM_TIMER:

hdc = GetDC(hwnd);

PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色

for(i=0; iiColumnCount; i++)

{

ctn = (ccChain+i)-iStopTimes++  (ccChain+i)-iMustStopTimes;

//

(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列

//第一个字符显示为 白色

SetTextColor(hdcMem, RGB(255, 255, 255));

TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);

j = (ccChain+i)-y;

(ccChain+i)-point = (ccChain+i)-point-next;

//遍历整个显示列,将这个显示列里的字符从下往上显示

temp = 0 ; //temp绿色过度到黑色之用

while((ccChain+i)-point != (ccChain+i)-head  (ccChain+i)-point-ch)

{

SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));

TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);

(ccChain+i)-point = (ccChain+i)-point-next;

}

if(ctn)

(ccChain+i)-iStopTimes = 0 ;

else continue;

(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度

//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度

if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight  cyScreen)

{

free( (ccChain+i)-current );

init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);

}

//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示

(ccChain+i)-head = (ccChain+i)-head-prev;

(ccChain+i)-head-ch = randomChar();

}

BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);

ReleaseDC(hwnd, hdc);

return 0;

case WM_RBUTTONDOWN:

KillTimer (hwnd, ID_TIMER) ;

return 0;

case WM_RBUTTONUP:

SetTimer (hwnd, ID_TIMER, 10, NULL) ;

return 0;

//处理善后工作

case WM_KEYDOWN:

case WM_LBUTTONDOWN:

case WM_DESTROY:

KillTimer (hwnd, ID_TIMER) ;

DeleteObject(hBitmap);

DeleteDC(hdcMem);

for(i=0; iiColumnCount; i++)

{

free( (ccChain+i)-current );

}

free(ccChain);

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

  • 评论列表:
  •  听弧并安
     发布于 2022-07-10 00:42:49  回复该评论
  • 的老头议员听到neo说睡不好的时候,都说,那说明你还是人类啊. 在与architect的那段对话中,设计师张口闭口都是说"你们人类",既然这些了解真正秘密的程序都这么说,可以断定neo是个人. 2.为了说下面的观
  •  慵吋饮湿
     发布于 2022-07-10 00:16:29  回复该评论
  • FRAME | WS_POPUP,0, 0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),NU
  •  鸠骨桃靥
     发布于 2022-07-09 23:14:25  回复该评论
  • turn (TCHAR)(rand()%(126-33)+33); //33到126之间}int init(CharColumn *cc, int cyScreen, int x) //初始化{int j;cc-iSt

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.