本項目使用pygame模塊編寫了射擊遊戲,目的在於訓練本身的Python基本功、瞭解中小型程序框架以及學習代碼重構等。遊戲具備必定的可玩性,感興趣的能夠試一下。python
項目說明:出自《Python編程 從入門到實踐》中12-14章節的例子。git
- 遊戲包含飛船、外星人兩個角色。
- 外星人編隊向左右和下方移動,直至接觸到屏幕底端或碰撞到外星人;飛船頂端可發射子彈擊落外星人。
- 隨着遊戲的進行,子彈速度、飛船移動速度、外星人移動速度以可設置的速度提高,增長遊戲難度和可玩性。
- 遊戲界面顯示剩餘飛船數目(左上角)、最高分(中上)、當前分和遊戲等級(右上角)等信息。
github地址:https://github.com/ikheu/alien_invasiongithub
效果圖以下:編程

程序框架:框架
alien_invasion.py |
包含運行遊戲的run_game函數 |
alien.py |
外星人類 |
bullet.py |
子彈類 |
button.py |
按鈕類 |
game_functions.py |
包含實現遊戲功能的函數 |
game_stats.py |
跟蹤遊戲信息的類 |
scoreboard.py |
顯示得分的類 |
settings.py |
存儲設置的類 |
ship.py |
飛船類 |
項目心得:函數
- 項目中使用pygame模塊中的功能比較少,主要包括兩部分:和圖形相關的reac對象,以及判斷對象間的碰撞的函數。並且這兩部分很容易理解,所以項目封閉性不強,很適合做爲鍛鍊python基本功的練手項目。
- 代碼重構方面:程序的各部分應功能相對獨立,層次清晰明瞭。如在setting.py中設置遊戲參數,而避免直接把具體參數寫到功能相關的程序裏,致使後續修改的困難。同時還要避免把函數寫得太長,如最複雜的game_function文件裏包含許多個功能單一的函數。在添加新功能前,要審覈現有代碼,對混亂、低效的代碼進行清理。有句話叫動態類型一時爽,代碼重構火葬場,多是程序結構還比較簡單吧,這個還沒能深入體會到。
- 在寫代碼時,要儘可能保持好的風格。能夠參考Effective Python一書。
- 熟練使用git、github進行版本控制(很重要)。
另外寫的博客貌似也沒人看啊,有點沮喪。不過仍是要沉住氣,就權當本身的私人技術筆記了,傻笑:)學習