請(qǐng)記住本站域名:
黃金屋
超腦黑客 第九十一章 移動(dòng)的小球
“小鴻,這就是庫(kù)克說的那個(gè)過濾器?”馮婉看著手中的這個(gè)火柴盒大小的小東西驚訝地問道。
林鴻點(diǎn)頭:“是的。這是一個(gè)自適應(yīng)的信號(hào)過濾器。雖然只有這么大,功能還是挺實(shí)用的,可以很好地將背景噪音給過濾出來?!?p/>
這個(gè)小東西,是他當(dāng)初花費(fèi)了一個(gè)多月的時(shí)間不斷測(cè)試和調(diào)整才設(shè)計(jì)出來的,就是為了應(yīng)付空中日益增多的無線電信號(hào)噪音。
雖然他在之前沒有見過類似的東西,但他卻萬萬沒想到,庫(kù)克竟然對(duì)這個(gè)東西這么推崇。在他看來,這個(gè)東西只要想通了其中的原理,應(yīng)該不難的。
話雖如此,這卻是他一廂情愿的想法。如果不是對(duì)這些電路理解得非常深刻,根本沒能力將這些基本電路組合起來。而那些能夠理解的人,卻因?yàn)橐恍┝?xí)慣性思維的影響而將創(chuàng)造力給束縛住了。按照常規(guī)理論,這其中的幾個(gè)基本電路是無法如此相連的,否則肯定會(huì)燒毀電路。
但巧妙地是,這幾個(gè)基本電路組成起來,就會(huì)形成一個(gè)大的回路,而這個(gè)整體電路又會(huì)產(chǎn)生獨(dú)特的功能,將理論上會(huì)燒毀地電路很好地融合在一起,渾然天成。
一加一,不一定等于二。
馮婉不懂這些東西,她原本已經(jīng)被庫(kù)克說得心動(dòng),可是看到手中的最終“產(chǎn)品”,她的信心有些動(dòng)搖了。
于是,為了保險(xiǎn)起見,她開始給自己的朋友打電話,向?qū)I(yè)人士,詢問專利方面的有關(guān)事宜。
林鴻對(duì)此事并不怎么上心,這個(gè)小東西只不過是他制作出來自己用的,后來還做過一個(gè)與之配套的信號(hào)增益器,也不大,一起帶到這里來了,回頭把這個(gè)東西也讓庫(kù)克看看好了。
在母親在打電話的時(shí)候,他回到了自己的房間,繼續(xù)捧著紅皮書看了起來。
他現(xiàn)在正在看顯示器的固件部分。
這個(gè)時(shí)期的顯示器,其實(shí)就是電視機(jī)顯像管,基本的原理就是通過加速電子,使其轟擊在熒光屏上產(chǎn)生亮點(diǎn),從而達(dá)到顯示文字或者圖像的效果。
顯像管就相當(dāng)于是一個(gè)黑匣子,六個(gè)方向都有磁場(chǎng),電子在磁場(chǎng)的作用下會(huì)進(jìn)行加速或者偏移。例如,想在顯示器上顯示一條橫線,則可以從陰極發(fā)送連續(xù)不斷的電子束,剛開始的時(shí)候指向熒光屏的最左邊,然后加上一個(gè)左右方向的磁場(chǎng),“拉著”電子束從左向右運(yùn)動(dòng)。這個(gè)過程,就好像是有一個(gè)人端著一把機(jī)關(guān)槍,從最左邊掃射到右邊,最終在槍靶(熒光顯示屏)上轟擊出了一道彈痕。
要想控制電子形成指定的文字和圖案,這是一個(gè)非常精密的操作,手動(dòng)肯定是無法完成的,神槍手都無法用機(jī)關(guān)槍在墻上工整地寫出簡(jiǎn)單的漢字,更別說畫復(fù)雜的圖形了。
于是工程師們便將這些操作封裝成一個(gè)個(gè)簡(jiǎn)單的指令,將整個(gè)顯示器當(dāng)成一個(gè)黑匣子,只要對(duì)黑匣子說“畫橫線”,那么黑匣子就會(huì)自動(dòng)在顯示屏上顯示出一條橫線,至于其中到底是如何實(shí)現(xiàn)的,使用者根本不用關(guān)心這些細(xì)節(jié)。
這個(gè)黑匣子就是固件。出廠的時(shí)候,廠家會(huì)給出一本厚厚的固件技術(shù)手冊(cè),手冊(cè)中,詳細(xì)介紹了顯示器中所能支持的指令,點(diǎn)和線的畫法是最基本的,有的甚至還有畫各種各樣的基本幾何圖形。當(dāng)然,有的硬件工程師甚至?xí)低翟诶锩媛裣乱粋€(gè)彩蛋,例如某條特定的指令可以自己在顯示器上顯示出他的名字。
之前林鴻雖然懂得維修電視機(jī),卻不知道為什么電視機(jī)能顯示如此復(fù)雜的圖案,看完這個(gè)章節(jié)之后終于有了一個(gè)比較深入的理解。
在看這個(gè)章節(jié)之前,他知道BASIC的“PRINT”指令,可以在顯示器上打印字符,但是具體為什么這個(gè)命令能打印字符,他就抓瞎了。
而現(xiàn)在他已經(jīng)知道,這是因?yàn)轱@示器硬件中有一塊被稱為“顯示存儲(chǔ)區(qū)”(簡(jiǎn)稱顯存)的地方,這是個(gè)非常特殊的區(qū)域,這個(gè)區(qū)域當(dāng)中的任何內(nèi)容,都會(huì)被映射到顯示屏上面。這個(gè)原理和他小時(shí)候玩的一個(gè)影子游戲非常相似。
晚上用手電筒照射在手上,然后就會(huì)在墻壁上顯示出一個(gè)大大的影像,隨著他的手指做出各種動(dòng)作,墻壁上的圖案也會(huì)隨之變化。
顯存就相當(dāng)于他的“手”,而顯示屏就是“墻壁”。
“PRINT”指令完成的動(dòng)作,就是將要顯示的字符,發(fā)送到顯存區(qū)域,這樣固件部分就會(huì)自動(dòng)完成顯存里面的內(nèi)容和顯示器上的內(nèi)容的對(duì)應(yīng)映射。
林鴻這臺(tái)APPLE_II的顯示存儲(chǔ)區(qū)域小得可憐,只有1KB大小,對(duì)應(yīng)這顯示器上24行40列的顯示區(qū)域。
往顯存里面放進(jìn)去一個(gè)字母“A”,并且指定在哪一行哪一列,那么顯示器上就會(huì)在對(duì)應(yīng)的坐標(biāo)上將字母A顯示出來,這就是顯示器顯示字符的基本顯示原理。
林鴻看了這部分沒有再繼續(xù)看下去,而是啟動(dòng)了蘋果計(jì)算機(jī),打算動(dòng)手編個(gè)程序試試手。
編什么好呢?
他有點(diǎn)拿不定主意。
初學(xué)者一般都會(huì)這樣,對(duì)自己所學(xué)到的內(nèi)容往往有些茫然,不知道如何將這些知識(shí)應(yīng)用到自己的程序中。心中想編寫程序,卻又不知道該編一個(gè)什么樣的程序。
其實(shí)林鴻目前最大的目標(biāo)是想自己編寫一個(gè)游戲,不過這其中似乎難度不小,憑他目前的能力有點(diǎn)好高騖遠(yuǎn)了。
最終他決定從最簡(jiǎn)單的開始,先在顯示器上畫一個(gè)小球。
BASIC有現(xiàn)成的畫圖函數(shù),使用畫圓的函數(shù)很快就在顯示器上畫好了一個(gè)小圓,然后再用白色對(duì)其進(jìn)行填充。這很簡(jiǎn)單,直接調(diào)用函數(shù)就實(shí)現(xiàn)了。
接下來,林鴻想讓這個(gè)小球動(dòng)起來,從一地方移動(dòng)到另外一個(gè)地方。
BASIC里面沒有移動(dòng)函數(shù),必須得自己來實(shí)現(xiàn)這個(gè)效果。
怎么才能移動(dòng)?
林鴻想起了以前在鄉(xiāng)下看電影的情景。電影膠帶是由一張張靜態(tài)的膠片組成的,通過移動(dòng)著寫膠片,就會(huì)讓人物動(dòng)作起來。孫武曾經(jīng)從放映員手里得到過這么一段膠片,林鴻仔細(xì)觀察過,相鄰的膠片看似一樣,實(shí)際上是不相同的,動(dòng)作之間有細(xì)微的移動(dòng)。
他覺得自己也可以使用這種方式,讓小球動(dòng)起來。
于是,他在小球的旁邊再畫了一個(gè)小球,相當(dāng)于是第二張膠片,但是如果想要實(shí)現(xiàn)動(dòng)態(tài)效果,前面那個(gè)小球就必須擦除。
如何擦除呢?BASIC里面可沒有擦除圖像的指令函數(shù)。
林鴻想了半天,最終使用了一個(gè)比較笨的方法,他在前一個(gè)小球的地方,再畫了一個(gè)黑色的小球,正好將原來的覆蓋掉了,而背景顏色也是黑色的,這樣就相當(dāng)于將小球給擦掉了。
具體過程是這樣的,林鴻先畫一個(gè)白球,一秒鐘之后,在左移五個(gè)像素的地方再畫一個(gè)白球,于此同時(shí),用黑球?qū)⒃瓉淼陌浊蚪o覆蓋,如此重復(fù),一直到屏幕的最右端。通過控制每次停留的時(shí)間和位移的長(zhǎng)度,他還可以調(diào)節(jié)小球移動(dòng)的速度。
看著顯示器中快速移動(dòng)的白色小球,林鴻臉上露出了會(huì)心的笑容,現(xiàn)在完成的功能雖然比較簡(jiǎn)單,但這是一個(gè)很好的開始。
快捷鍵: 上一章("←"或者"P") 下一章("→"或者"N") 回車鍵:返回書頁(yè)