練手項目:利用pygame庫編寫射擊遊戲

本項目使用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進行版本控制(很重要)。

另外寫的博客貌似也沒人看啊,有點沮喪。不過仍是要沉住氣,就權當本身的私人技術筆記了,傻笑:)學習

相關文章
相關標籤/搜索