用 python turtle 寫 Flappy Bird
這個 Flappy Bird Clone 的主要目的是拿來當某種形式的初學者 Tutorial。
第一次使用是在花蓮.py 二月聚會,當作一系列介紹 Python 遊戲框架、引擎、工具的一部分。更精確地說,是拿來當作這一系列的開頭。因為在介紹這個簡單遊戲的撰寫過程後,就會發現 turtle 缺少什麼東西(進階繪圖功能、音效、物理引擎、碰撞偵測),然後我就可以順理成章地說,這就是為什麼我們需要遊戲引擎。替往後的介紹鋪路。
不過在寫這個 Demo 的時候,我主要還是以程式語言初學者 Tutorial 的方向來思考。所以寫的過程中,盡量不使用我認為比較進階和複雜的概念。所以複雜一點的 nested function、 OOP、decorator、 yield 這些都盡量避免了。
我還是有用一個 class 定義, 但那純粹拿來當成 struct 用,避免太多需要修改的 global variable。
裡面也有一個 lambda, 但那個 lambda 是準備拿來說明 lambda 語法的。
也許這個原因, 所以被 Keith Yang 發現在 Python 2.7 也能跑。
同樣也是因為教學的理由,所以只用內建的 turtle module。音效方面也捨棄 PyAudio 而採用呼叫 mplayer。
這個 project 以後會慢慢變成 step-by-step tutorial, source 在 https://github.com/tjwei/Flappy-Turtle
配合 python 3.3 或 2.7,使用空白鍵就能玩。
第一次使用是在花蓮.py 二月聚會,當作一系列介紹 Python 遊戲框架、引擎、工具的一部分。更精確地說,是拿來當作這一系列的開頭。因為在介紹這個簡單遊戲的撰寫過程後,就會發現 turtle 缺少什麼東西(進階繪圖功能、音效、物理引擎、碰撞偵測),然後我就可以順理成章地說,這就是為什麼我們需要遊戲引擎。替往後的介紹鋪路。
不過在寫這個 Demo 的時候,我主要還是以程式語言初學者 Tutorial 的方向來思考。所以寫的過程中,盡量不使用我認為比較進階和複雜的概念。所以複雜一點的 nested function、 OOP、decorator、 yield 這些都盡量避免了。
我還是有用一個 class 定義, 但那純粹拿來當成 struct 用,避免太多需要修改的 global variable。
裡面也有一個 lambda, 但那個 lambda 是準備拿來說明 lambda 語法的。
也許這個原因, 所以被 Keith Yang 發現在 Python 2.7 也能跑。
同樣也是因為教學的理由,所以只用內建的 turtle module。音效方面也捨棄 PyAudio 而採用呼叫 mplayer。
這個 project 以後會慢慢變成 step-by-step tutorial, source 在 https://github.com/tjwei/Flappy-Turtle
配合 python 3.3 或 2.7,使用空白鍵就能玩。