小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2008年4月17日 星期四

今夜,我們瘋狂跳舞

又到了大水蟻兵團大軍壓境的季節了...

今天,夜晚是我們的

不在乎旁人鄙夷嫌惡,我們恣意狂歡,盡情飛舞

這一刻的燦爛與幸福,值得一生蟄伏與屈辱

曾經,在黑暗中匍匐,只有渴求的痛楚

今晚,我們拋開束縛,生命自己作主

黑暗中飛向光明的渴求,純如天使

燈光下意慾蔓延的身軀,輕若無骨

兩小時愛恨纏綿,三億年輪迴癡苦

在春雨中顫抖,羽翼如櫻花飄走

在星空下狂舞,直到粉身碎骨

從不奢想要活多久

只求能陪妳到日出,將光明好好看個清楚

然後,一夜濃情蜜意入夢,伴隨朝露化為春土

明日,我將死去

但今夜,我們瘋狂跳舞

2008年4月16日 星期三

不用擔心誰吃狗

前陣子看完 Neil Gaiman 的美國眾神後,又接著看了他的「煙與鏡」。可能是由於翻譯的緣故,感覺沒有美國眾神那麼有趣。但裡面還是有不少有趣的故事。
最近的韓國狗肉事件,各種意見都有。用極端化法則來思考,你總是可以用能吃牛肉的理由來吃狗肉,用不能吃人肉的理由來反對吃狗肉。所以,太過一般的論述是無效的。
不過,我舉韓國狗肉事件的原因不是要講道理,只是要說煙與鏡裡面的一個故事。我現在手上沒書,不過故事基本上是這樣:
十年前的一天早上,所有動物都消失了。
人們開始恐慌。
愛因斯坦說:沒有蜜蜂,人類只能活四年。
更何況是所有動物都不見了呢。
沒關係,我們還有嬰兒。
嬰兒不說話也不太動。
他們沒有智慧和靈魂,和動物植物一樣。
嬰兒的肉又嫩又好吃,沒有人懷念動物。
嬰兒皮有彈性有保暖,做成的衣服真舒適。
愛因斯坦錯了,只要有嬰兒,人類活多久都不是問題。
不過問題是,今天早上,所有嬰兒都消失了。
怎麼辦?我們要吃什麼?穿什麼?
不用擔心,我們一定會想到辦法。
因為人類很聰明,跟動物和嬰兒不一樣。
煙與鏡中的另外一個故事,一個老旅館服務生說,過去是有神的時代,電影明星就像是神一樣,有獨特的氣質,你一看就會知道。但電視發明後,就沒有神了,只有電視裡面的小人。他也看到很多電視裡面的小人跑來著旅館,但和過去的明星完全不一樣。
我懷疑這是否就是美國眾神的靈感來源之一。有點像是 Video killed the radio star 的感覺。
美國眾神說的就是新世界沒有神。有一些老的神,但是因為不再受到人們的崇拜與信賴,逐漸凋零。有一些新的神崛起(網路、電視),但這些新的神只不過是將來的舊神(鐵路、電報)。美國這個地方,不適合神居住。
當有人喊著自己是新世界的神,或者新世界不需要神,我想到的是日劇生徒諸君裡面的 3DT 和「我們不需要老師」。生徒諸君裡面的二年三班學生,在被原本崇拜與信賴老師出賣背叛後,產生對老師以及大人徹底的仇恨與恐懼。所以其中的三人組成 3DT 這個團體,接受同學的委託,保護同學。「也只有我們能夠保護大家了」3DT 常常對彼此這樣說。即使在一年後,完全不一樣的熱血老師來了,他們也還是完全不信任。他們不斷重複:「我們不需要老師」。
在舊神不再受到信賴的新時代,新的神將自己的身份隱藏在人群中。
因為他們分不出來神與偽神的差別,只好自己當起神。但是如果你連神與偽神都分不出來,你又怎麼能夠當一個好的神?這就是問題所在。
人是無法變成神的,就像美國眾神的設定一樣,人與神是兩種不同的生物。
但是當人比當神要好。神要靠其他人的崇拜才能生存,而人不用。主角 Shadow 這樣說。
到了生徒諸君最後,他們還是說「我們不需要老師」。但意義已經完全不同了。之前他們因為認為所有的老師都是壞的,所以乾脆通通都不要。最後他們已經因為好老師而成長了,所以不再需要老師了。
所以結論是:

為何人類不吃狗?只因人是神的狗。
為何人類不吃狗?擔心神吃祂的狗。
雖然說是寵物狗,難保主人換胃口。
希望大家都變狗,不需要神他們吼。
倘若大家都是狗,不用擔心誰吃狗。
頂多就是狗咬狗,不要人牽自己走。

2008年4月7日 星期一

Cyril 的 Believe

圖片來源: Wikipedia
昨天去看了 Cyril 的 Believe 魔術秀。
座位
雖然本來不是特別想去看,不過既然決定要去看,依照慣例,就要選好一點的位置。因此,我買的是 $4500 的票。事實證明,果然是不錯的選擇。因為 Cyril 的魔術大多是近距離的,距離太遠,只能盯著螢幕,失去臨場感。既然要看,就要選好一點的位置,不然倒不如回家看電視。不過呢,即使是第一排的觀眾,許多地方,仍然只能看螢幕,所以第一排反而不好,因為要抬頭看。我坐第七排,位置適中。
Cyril 為了彌補近距離需要螢幕的缺憾,常常下來走動,所以坐在前面還是有好處的。
如果坐在前面,主秀魚缸魔術是可以不需要攝影機就能看到的。
不過整體來說, Cyril 的街頭魔術風格的魔術不適合在這種場合表演。因此,這場演出中,Cyril 穿插了不少舞台和 Party 魔術。
翻譯
翻譯水準普通,跟平常一樣爛。很多地方翻錯。比方說,有一段是 Tony's bar, 這個程序分成兩階段。第一個階段, Cyril 表演猜出觀眾選的牌。為了襯托第二段的神奇, Cyril 基本上只是用職業的水準簡單的執行這個魔術。表演完第一階段後,Cyril 說「剛才的這個魔術其實很難,但是因為現在魔術資訊太發達,觀眾的胃口變大,所以觀眾不會特別欣賞這個魔術。」但是翻譯在 Cyril 說完第一句之後,翻譯翻成「等下(第二階段)的這個魔術會更加困難神奇」。可想而知,接下來的翻譯只好混過去。
另外在主秀水族箱魔術,Cyril 講了一個笑話,說他畫在魚缸上面的魚的名字叫做大白鯊( Jaws)。這個沒有被翻出來,所以只看到 Cyril 做出誇張的肢體和表情,而現場沒有反應。
而在一個情色雙關語風格的魔術裡面,Cyril 拿著繩子問男性觀眾一個問題,翻譯翻的是「請問你喜歡繩子(rope)嗎?」不過我聽起來像是「你想歡角色扮演(role play)嗎?」我不很確定我聽到的是對的,但配合後面兩個洋妞的動作,以及後面的劇情,假如 Cyril 說的不是角色扮演,那他應該說角色扮演(用 BDSM 就太過頭了點)。
當然這樣也有個好處,從翻譯的流暢度可以當成線索,判斷哪些是事先設計好的橋段。
不過撇開翻譯的正確或者錯誤,翻譯的主持能力和臨場反應倒是不錯。
優點
應該說是,我喜歡的部份。
我喜歡那個鞋子清洗器的程序。他請了一位小朋友上台幫忙,而且充分發揮了小朋友的功能。隱藏魔術機關的劇情(將動作合理化),我很喜歡。
主秀魚缸程序,我也很喜歡。主要的優點是情境設計,以及與請上來的觀眾之間的互動。除此之外,還與前面表演的跳帕做了連接。
最後最後的雪花表演,雖然不新鮮,但是我覺得他做得很漂亮。舞台魔術中香煙和錢的部份也不錯,我喜歡他的舞台肢體風格。
謝幕的變人效果也很好。
缺點
第一個缺點是近距離的魔術不適合在這麼大的場合表演。偶而穿插可以,已魔術師為觀眾的場合可以,但是不適合當成以一般觀眾為對象表演裡面的主軸。所以, Cyril 盡量穿插了其他類型的魔術,像是大道具類型的。但這些魔術沒有什麼新奇之處,也沒有展現 Cyril 的魅力。
第二個缺點是,失手。在我看的這場表演中, 在表演舞台魔術時,Cyril 失手了。而這個失手是連外行人都看得出來的。因此,他的表演被迫中斷,他被迫比出手勢,要音控停止音樂(更尷尬的是,他手勢比了很久,我比音控師還早五六秒鐘看懂他的手勢)。事實上,他在更早一點的時候就已經有失誤了,只是這個失誤外行人應該看不出來。而稍後,他表演撲克牌魔術時,手法很不熟練,我懷疑他是因為之前的失誤而臨時補上的。
第三個缺點,是與觀眾的互動。我覺得他有點過度利用觀眾。比方說,請女觀眾上台來之後,先是親了女觀眾臉頰一下,然後坐手勢要女觀眾回親。就在女觀眾要親下的時候,他故意轉頭,讓女觀眾親到嘴巴。親臉頰那些都 OK。但是後來轉頭那個動作,一方面破壞了觀眾與魔術師之間的信任,另外一方面,讓上來幫忙的觀眾尷尬。雖然他有確認過那位女觀眾旁邊坐的不是她男朋友,但我仍然認為這樣是犧牲觀眾來換取效果。而這不是單一事件。他常常利用發聲權不對等的狀況來製造效果。雖然這個手法很常見,但是我覺得他利用得有點過頭,會造成被利用的觀眾有點尷尬。雖然這只是我的看法,不過至少對我來說,已經破壞了他街頭魔術那種比較親和的形象。
結論
不是非看不可,但也不算太差。我認為坐最好區, $2500 是合理的價錢。

2008年3月18日 星期二

那一棒的鋒情

六局下半,兩人出局,一壘有人,一比零,我們還落後一分。

時間是 2007年 12月 3日,中華隊在亞錦賽對上日本,爭取僅有的一張奧運門票。

日本的投手是王牌達比修有。

這時,輪到陳金鋒上場打擊。他在義大利世錦賽拿到全壘打王,已經是十年前的事了。

就像很多其他人一樣,我也在電視前觀看這場比賽。而那種既期待又怕受傷害的感覺又再度出現。期待陳金鋒再度成為救世主,但也很害怕他被三振或接殺。

和很多人一樣,我也有很長的一段日子,窩在廉價租來的小房間,吃的是僅能果腹的食物。那段時間,陳金鋒也在美國職棒大小聯盟間載浮載沉,雖然沉的時候要比浮的時候多些。小聯盟的待遇並不好,但那時早已是國民英雄的他,卻甘之如飴。

和很多人一樣,我時常會注意他的新聞,有時是好消息,其他時候則不是。每當發現他又沒打擊機會甚至又回 3A,雖然不見得完全理性,但常常會埋怨道奇總教練崔西有眼不識英雄,不多給一點機會。

但不管是好新聞還是壞新聞,和很多人一樣,總是期待多看到他的消息。因為只要看到他的出現,再爛的租屋與食物都不算什麼了。他讓我們回想起付出這一切的理由,讓我們記起自己的夢。而每個人的夢想都和他想進入大聯盟的夢想一樣重要。

未來就像投手投出的下一球,你無法預測會是什麼球路。但反正球來就打!也許我們不知道球會怎麼來,可是只要陳金鋒上場,我們永遠知道球要往哪裡去。

所以陳金鋒上大聯盟的時間,我們去道奇看球的頻率就會增加,希望能剛好看到他上場。雖然我們並沒有抱太大希望,因為你也知道,他上場的次數並不多。但還真有那麼一次,我們碰到了。八局上半,陳金鋒上場守右外野。雖然看得有點心驚膽跳,但這次他的守備稱職。九局下道奇進攻,還落後一分,終於快要輪到陳金鋒打擊了。一人出局,一壘有人,打擊的是來自韓國的崔熙燮,陳金鋒在旁邊暖身。我們的劇本當然是崔熙燮上壘後,陳金鋒至少擊出個打點甚至再見全壘打。如果崔熙燮不幸出局,那就是典型的陳金鋒時刻,也該是時候讓道奇的球迷見識救世主的風采了!

全壘打果然出現了,不過是由崔熙燮打出。全場球迷的歡呼雷動。這些歡呼聲裡面,有不少是韓國球迷發出的吧?不知道他們有多高興。我們心裡都默默這樣想。

2005年,我的生活條件變好了不少,而陳金鋒也終於回到台灣家人的身邊快樂的打棒球了。經過七年的辛苦,他終究還是沒能站穩大聯盟。十年前他拿到全壘打王的那屆世錦賽,他在預賽裡創出連四場五隻全壘打的新紀錄。但中華隊預賽就被淘汰,僅得第十三名,有史以來最慘的成績。似乎默默告訴我們這位國民英雄的人生將有帶著悲劇色彩的一面。回到台灣打職棒固然快樂,但缺少了美國職棒激烈的競爭,他對快速球勢必會生疏許多。

事實上,2006年亞洲職棒大賽,面對達比修有的快速球,他吞下 2K。大家都在想,如果他繼續留在美國,結果是否會不一樣?也因此,當陳金鋒上場時,以往只有單純的期待與相信,現在慢慢參雜了一份擔憂。擔憂的感覺慢慢變強,強到甚至某一部份的我,希望他能保送上壘或隨便打個鳥安吧。與其說是不想見到救世主的形象被破壞,不如說不想看到夢想在現實殘酷下幻滅。

回到六局下半。陳金鋒慢慢站上打擊區。和道奇球場那次一樣,壘上有人,兩人出局,落後一分。不同的是,這次,他等到救世主時刻了。問題是,對方的投手可是曾讓他吞下 2K 的達比修有。一年不見,年輕的達比修有正逐漸往頂峰邁進,年輕帥氣的他,來台時成了小女生追逐的偶像。而陳金鋒呢?

然後,我看到他的眼神。突然之間,我有種無法形容的感覺。硬要形容,就像是那種宣稱世界末日的瘋狂預言家附身一樣那種感覺。只不過,這次瘋狂預言家喊的是救世主降臨。不是那種又期待又怕受傷害的感覺,也不是過去那種單純的期待與希望,而是「一定」。他一定會打出全壘打。不是期待或相信,而是絕對的知道。幾球糾纏之後,那個瘋子叫的只是越來越大聲,果然:

球飛出去了,球飛出去了!兩分砲,我們反而領先了。這時候的心情,我想,如果你那時也有看到,你也同樣感受到了。

當然,既然你有看到,你也知道後來發生了什麼事。最後,我們10:2 慘敗。最後幾局,許多球迷都不忍卒睹。那張奧運門票,最後也讓日本拿去了。

時間拉到 2008 年八搶三奧運資格賽,中加之戰,八局下半,四比二我們還落後兩分,兩人出局,一二壘有人,輪到打擊的是有小陳金鋒之稱的羅國輝。

這是我們最後一次爭取奧運門票的機會。陳金鋒因為受傷,沒有參加。沒有陳金峰的中華隊,是一支年輕的充滿新血的球隊。前三場我們三連勝,不過,硬仗從這場才真正開始。事實上呢,因為加拿大比較強,我們鎖定的其實是下一場的澳洲隊。這隻年輕的隊伍,能夠緊咬著強隊加拿大不放,已經讓人對他另眼相看了。

同樣的救世主時刻,但場上的不是陳金鋒。我對羅國輝並沒有特別的期待。不要誤會,我知道他很強,也非常期待並且希望他能打出全壘打。只是相比之下,這個期待並不特別而已。畢竟,他不是陳金鋒。

直到看到他的眼神,我才知道我有多錯。因為,那是陳金鋒對上達比修有的眼神。我很確定,因為那個瘋狂預言家又跑出來了。「一定,這是一定救世主降臨的時刻!」

接下來發生的事情,就看影片吧:

果然,救世主降臨,球四平八穩飛出去了!5:4,我們領先了。只要再撐一個半局,我們就贏了!不過,就像中日戰一樣,我們又被逆轉了。但是這次不一樣,他們與加拿大奮戰到延長加賽,才以 6:5 一分之差飲恨。

他們說,要帶陳金鋒賢拜到北京。

當陳金鋒回來打球的時候,我們說能夠打過大聯盟,夢想已經達成。我們說,追夢本身就是一切。我們說,夠了,你付出夠多了,該是回到家人身邊快樂打球的時候了。但是,說沒有完全遺憾是騙人的。

直到今天,我才了解之前的想法有多膚淺。夢想從來就沒有遺憾。陳金鋒的夢想已經傳承到這隻年輕的隊伍上了。

這幾年,陳金鋒已經用他的行動,默默的影響了所有人,他的隊友們,學弟們,球迷們,所有台灣人。甚至也許,他的對手們。這個勇敢追夢的精神,已經深深地影響了每一個人。夢想的傳承,從來沒有斷過,從紅葉開始到世界盃、亞洲杯、奧運各項國際賽,從成棒到職棒的分分合合、從往日職發展到往美國發展,這個傳承,一代接著一代,從來沒有斷過,而且逐漸茁壯。我們見證了陳金鋒將他隊棒球的體悟,傳遞給年輕的後輩。

如果說奧運象徵人類對於夢想的追求,那麼,他們帶去的不是陳金鋒,而是我們每一個人。

每一天,你在自己的崗位上辛勤奮戰,為了自己的夢想而努力,就像所有的上班族、業務員、學生、生意人、工人或者任一個人。早上出門途中,買早餐時和老闆娘互道謝謝。謝謝你買我的早餐。謝謝你努力做的早餐。謝謝早上的太陽。謝謝中華隊。今天也要努力喔。

藉由短暫的接觸,堅守崗位、努力追夢的信念。在每個人之間傳遞著。

所以我們不會忘記,球要往哪裡去。

有一隻球隊,數十年來,將我們的夢想代代傳承。有人叫他中華隊,有人叫他台灣隊,但從沒有人為此爭執。因為我們知道,我們支持的是同一隊。

有一個人,在自己崗位堅持,埋頭耕耘。他是陳金鋒,他也是你我。也許講到台灣之光,人們第一個想到的不是他。但我們知道,只要我們都努力照亮身旁的人,台灣就會閃亮耀眼。

延伸閱讀:遷徙的冠羽: 帶陳金鋒去北京

2008年3月5日 星期三

中文程式語言

每次一提到中文程式語言,常常會看到人批評「中文程式語言」不實用,浪費時間。

「程式裡面用的英文很簡單啦,不會造成困擾」

「打英文還比較快」

沒有錯,對「一般人」來說,也許的確不實用。

大部分的人都把自己當成是「一般人」(常常也沒有錯),但是忽略掉自己前面和後面都還有人。

同樣的那群「一般人」,他們會偏好中文的文件和軟體,也會感謝翻譯成中文化的作者。

如果單從我自己的角度來看,中文化根本沒必要,浪費時間。因為「文件中用的英文很簡單,不會造成困擾」、「直接看英文還比較快」。

而我的英文還很爛呢。

如果連我都覺得中文化翻譯都是沒有意義、浪費時間,更何況是對英文程度正常的人來說?

還好,不是每個人都只從自己的需求來看世界。

那些想磨練英文而翻譯的人不談(其實翻譯品質堪慮),中文化的工作者本身往往不需要這些中文化文件和軟體的,他們是為了別人而做的。

「一般人」的確需要感謝那些翻譯者,感謝他們不像「一般人」一樣,只因自己不需要,就認為浪費時間、不實用。

很明顯的,發展中文程式語言的人,也不是因為自己需要才發展的。

前幾天到我家裝潢,弄電路、音響的人,有些甚至連 In, Out 這麼簡單的字, 都不是很確定。以前當兵的同袍,英文的程度也是遠低於我的預料。他們才是真正的一般人。

但我認為他們其實都很聰明,如果有適當的環境,如果程式可以用中文寫,他們也許就能學會寫程式。

這是我關心中文程式語言的初衷。即使遠在當兵之前,我還過份高估一般人英文程度的時候也一樣。

因為我知道,這個世界很大,有很多不同的人,很多狀況會出乎我預料。

比方,我也實在不知道 OOPS 開放課程計畫的中文翻譯到底要給誰看。

我無法想像能有多少人能學習高等課程,卻看不懂英文。我無法想像有人需要這套計畫。

我反而能想像那種因為是中文,而望文生義誤解的人(推翻相對論,滿口量子能量場、證明尺規三分角的那類人)。

但同樣的,我知道世界上的人有千百種,如果要我下注,我還是會站在有人需要那邊。

2008年3月3日 星期一

James Dean 語錄

(照片來源: wikipedia)
James Dean,雖然過世很久,但是作為美國通俗文化的一個象徵,還是大家耳熟能詳的名字。
我當然也知道這位二十四歲早逝的電影明星,不過也只是模模糊糊的知道而已。
直到後來,發現了一些他的語錄,才驚訝到注意到一個不到二十四歲的人居然說過這麼深刻的話。
後來想想,大概很多是電影台詞吧?不過,還是不減這些名言的有趣性。

  • "Dream as if you'll live forever, live as if you'll die today.” 這句是他的經典名句。
  • “Only the Gentle are truly strong.” 厲害的人,都很溫柔呢。James Dean 的名句比漫畫早得多。
  • “I want to be a Texan 24 hours a day”
  • “Rebel Without a Cause.” 應該是電影片名
  • “Eternity? ... That is one hell of a movie.”
  • "There is no way to be truly great in this world. We are all impaled on the crook of conditioning. A fish that is in the water has no choice that he is. Genius would have it that we swim in sand. We are fish and we drown."
  • "And my heart just did a flip-flop over that."

2008年3月2日 星期日

用 30 行 ruby 寫俄羅斯方塊

學一種程式語言,第一步是先跟著 Tutorial 走一遍。
然後,找到參考手冊,因為,這是你的救生圈。像是 Python 的文件就寫得相當清楚。
所以,我無法理解那些在網路上問一些官方文件就有答案的問題的人。如果一個人看不懂文件上那麼清楚的文字,那表示他閱讀能力有問題。那他又怎麼能夠讀懂網友回答的文字?
現在學 ruby,文件風格和 python 有很大不同,但是也非常清楚有用。
當然,光是這樣還不夠,還要真的寫幾個程式才能算數。
至於要寫哪些程式呢?每個人都有自己喜好。就我來說,以前,每學一種 GUI framework 或者語言,我會寫一個 Ansi Terminal Emulator。更早一點,還沒有 GUI 的時候,碰到新的系統,會寫個簡單的畫圖程式和簡單的中文系統 Viewer。
這有點像是一種儀式,如同成年禮一樣,你學程式語言的成年禮。寫完這一個中小型的計畫,就能說自己會一種語言了。
不過我學 Python 的時候,倒是沒有什麼成年禮。因為 Python 實在太好學了,差不多是看到就會了。勉強要說的話,就是之前那個 Alpha-Beta Search 系統。
但這也就是為什麼我 Python 的程式設計能力不太紮實的緣故。後來用 Python 寫了一些短的的俄羅斯方塊,才體會到這點。
所以,現在我學 Ruby 時,也打算把俄羅斯方塊當成是成年禮的一部分。以下就是用 ruby 寫的 29 行俄羅斯方塊。


require "tk"
W,H,Blk=40,40,{0xf=>"red",0x2e=>"#0f0",0x27=>"blue",0x47=>"#ff0",
0x66=>"#0ff",0xC6=>"#38f",0x6C=>"#f0f", 0=>"#000"}
Bkeys=Blk.keys.select{|x| x!=0}
new_piece= proc{ proc{|pc| {:a=>(0..16).select{|i|(pc>>i)&1>0}.map!{|i|
[(i>>2)+1,i&3]},:i=>3,:j=> -2,:c=>pc}}.call Bkeys[rand(Bkeys.length)]}
def collide(na,ni,nj)
na.map {|n| true if @board[nj+n[1]][ni+n[0]]!=0}.include? true
end
def redraw
@canvas.delete "all"
@board.each_with_index{|b,j| b.each_with_index {|c,i|
TkcRectangle.new(@canvas, i*W, j*H, i*W+W,j*H+H,
'fill'=>Blk[@p[:a].include?([i-@p[:i],j-@p[:j]])? @p[:c]: c])}}
end
@score, @bw, @bh, @p = 0, 10, 20, new_piece.call
@board=Array.new(@bh+3){|j| j!=@bh ? [0]*@bw+[15]*3:[15]*(@bw+2)+[0]}
(@canvas=TkCanvas.new :width=>@bw*W,:height=>@bh*H).pack
TkRoot.new.bind("Any-Key") { |e| na,ni,nj=@p[:a],@p[:i],@p[:j]
ni+= e.keysym=="Left" ? -1:(e.keysym=="Right" ? 1:0)
na=na.map{|n| [n[1],3-n[0]]} if e.keysym=="Up"
nj+=1 if e.keysym=="Down"
@p[:a],@p[:i],@p[:j]=na,ni,nj unless collide na,ni,nj
redraw}
TkTimer.new(200,-1){|e| !(collide(@p[:a],@p[:i],@p[:j]+1) or !(@p[:j]+=1)) or
proc{ @p[:a].each{|n| @board[n[1]+@p[:j]][n[0]+@p[:i]]=@p[:c]}
@board=@board.inject([]){|a,l| l.include?(0)? a+[l]:[[0]*@bw+[15]*3]+a}
@p[:j]<0 ? exit : @p=new_piece.call}.call
redraw}.start(0).mainloop
這個比 python 的 tk 版要短,不過可讀性差多了。
原來寫的可讀性比較高,最開始甚至還有定義一組 class,不過行數大約是五十行。
後來不用 class,就變成 40行以內,然後再進一步犧牲一點可讀性,就降到了三十行以內。
ruby 高手可能可以找到不少以上程式碼的可笑錯誤吧!
ruby 和 python 的比較一直是個熱門話題,不過呢,我得先要等我更了解一點 ruby 再說。