這次 pycontw 2012 的抽獎效果似乎還不錯,這邊簡介一下背後的故事。
一開始是 yyc 借鏡 Eric Floehr 在 PyOhio 的經驗。然後 Peter Wolf Wang 爭取了 Wingware IDE Professional 兩個 license,並且提出貪吃蛇抽獎程式的構想。這大約是五月底的事情。
6/2 日, Peter 用 Pygame 實做這個程式的第一版。這個是他第一次用 Pygame 。
但是 6/3 他就因水痘住進隔離病房,註定無法參加 pycon。這時程式的雛型已經差不多,I am so ready 及 爆破音效也都有了,只是蛇是由綠色的圈圈組成。
6/7 我接手修改程式。我對 pygame 也沒什麼經驗。
我修改的部份只有:
- 把蛇改成 pycontw logo。
- 蛇碰到自己尾巴會有待避動作。
- 蛇的長度改成有限,但是吃到球之後會增長(也就是真正的貪吃蛇 style)。
至於最為大家津津樂道,優秀的蛇去追球的 logic,完全原汁原味沒有更動。
這個程式的結構其實不好,開獎時完全不吃 event。我後來修改的動畫,效率非常糟糕。而且還有不少 bug(剛發現我的 16:9 螢幕全螢幕時會有問題。)。
但還是 open source,以昭公信
https://bitbucket.org/yungyuc/pylottery。只是千萬不要拿來當成寫 pygame 程式的範例,除非是拿來當錯誤示範。
如果這個程式一開始是我做的,我相信程式的結構和邏輯應該會比較正常一點,但這個程式絕對會失去靈魂。怎麼說呢?因為這個樂透程式之所以有趣就在於他的不合邏輯。
為什麼要用貪吃蛇?蛇跑來跑去跟號碼有什麼關係?
如果是我構想,應該會用鬼腳圖(阿彌陀籤)的方式,然後讓蛇沿著鬼腳跑。因為這樣才有邏輯上的關聯。
這種點子是我一輩子都想不出來的。
當我跑了 Peter 的程式後,我楞了幾秒,才感受到 Pylottery 會達到的效果以及潛力。所以我樂意接手修改這個程式。我的修改主要就是強化凸顯這些特質。
這個抽獎方式很蠢,完全沒必要,完全沒道理,但 pycontw 這類活動一樣很蠢。工作人員義務出力,還要自掏腰包買票參加。 250 個參加者,只因為喜愛 python,就願意給沒什麼戰績的主辦單位機會,掏錢買票。很蠢,完全沒必要,完全沒道理。
也正是如此,我知道這個抽獎方式會得到共鳴, 也理解跨海而來的日本朋友為什麼會對這隻 "stupid snake" 笑得那麼開心。