Python小游戲16之炸彈人源碼
0 前言
?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。
為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天要分享的是
?? 基于python的炸彈人小游戲設計與實現(xiàn)
??學長這里給一個題目綜合評分(每項滿分5分)
難度系數(shù):3分
工作量:3分
創(chuàng)新點:4分
1 課題背景
大家小時候一定在紅白機上玩過炸彈人這款小游戲吧,《炸彈人》是HUDSON出品的一款ACT類型游戲,經(jīng)典的第一作登陸在FC版本,游戲于1983年發(fā)行。游戲具體操作是一個機器人放置炸彈來炸死敵人,但也可以炸死自己,還有些增強威力與技能道具增加了游戲的可玩性。

今天我們用pygame做一個炸彈人小游戲,游戲規(guī)則如下:
玩家通過↑↓←→鍵控制角色zelda(綠色)行動,當玩家按下空格鍵時,則可以在當前位置放置炸彈。其他角色(dk和batman)則由電腦控制進行隨機行動。所有角色被炸彈產(chǎn)生的火焰灼燒時(包括自己放置的炸彈),都將損失一定生命值;所有角色吃到水果時,均可恢復一定數(shù)值的生命值。另外,墻可以阻止炸彈產(chǎn)生的火焰進一步擴散。
當我方角色生命值為0時,游戲失??;當電腦方所有角色生命值為0時,游戲勝利,進入下一關。
2 實現(xiàn)效果



3 Pygame介紹
簡介
Pygame是一系列專門為編寫電子游戲而設計的Python模塊(modules)。Pygame在已經(jīng)非常優(yōu)秀的SDL庫的基礎上增加了許多功能。這讓你能夠用Python語言編寫出豐富多彩的游戲程序。
Pygame可移植性高,幾乎能在任何平臺和操作系統(tǒng)上運行。
Pygame已經(jīng)被下載過數(shù)百萬次。
Pygame免費開源。它在LGPL許可證(Lesser General Public License,GNU寬通用公共許可證)下發(fā)行。使用Pygame,你可以創(chuàng)造出免費開源,可共享,或者商業(yè)化的游戲。詳情請見LGPL許可證。
優(yōu)點
能夠輕松使用多核CPU(multi core CPUs) :如今雙核CPU很常用,8核CPU在桌面系統(tǒng)中也很便宜,而利用好多核系統(tǒng),能讓你在你的游戲中實現(xiàn)更多東西。特定的pygame函數(shù)能夠釋放令人生畏的python GIL(全局解釋器鎖),這幾乎是你用C語言才能做的事。
核心函數(shù)用最優(yōu)化的C語言或匯編語言編寫:C語言代碼通常比Python代碼運行速度快10-20倍。而匯編語言編寫的代碼(assembly code)比Python甚至快到100多倍。
安裝便捷:一般僅需包管理程序或二進制系統(tǒng)程序便能安裝。
真正地可移植:支持Linux (主要發(fā)行版), Windows (95, 98, ME, 2000, XP, Vista, 64-bit Windows,), Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX等操作系統(tǒng).也能支持AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS and OS/2,但是還沒有受到官方認可。你也可以在手持設備,游戲控制臺, One Laptop Per Child (OLPC) computer項目的電腦等設備中使用pygame.
用法簡單:無論是小孩子還是大人都能學會用pygame來制作射擊類游戲。
很多Pygame游戲已發(fā)行:其中包括很多游戲大賽入圍作品、非常受歡迎的開源可分享的游戲。
由你來控制主循環(huán):由你來調用pygame的函數(shù),pygame的函數(shù)并不需要調用你的函數(shù)。當你同時還在使用其他庫來編寫各種各種的程序時,這能夠為你提供極大的掌控權。
不需要GUI就能使用所有函數(shù):僅在命令行中,你就可以使用pygame的某些函數(shù)來處理圖片,獲取游戲桿輸入,播放音樂……
對bug反應迅速:很多bug在被上報的1小時內(nèi)就能被我們修復。雖然有時候我們確實會卡在某一個bug上很久,但大多數(shù)時候我們都是很不錯的bug修復者。如今bug的上報已經(jīng)很少了,因為許多bug早已被我們修復。
代碼量少:pygame并沒有數(shù)以萬計的也許你永遠用不到的冗雜代碼。pygame的核心代碼一直保持著簡潔特點,其他附加物諸如GUI庫等,都是在核心代碼之外單獨設計研發(fā)的。
模塊化:你可以單獨使用pygame的某個模塊。想要換著使用一個別的聲音處理庫?沒問題。pygame的很多核心模塊支持獨立初始化與使用。
最小開發(fā)框架
代碼執(zhí)行流程

4 具體實現(xiàn)
4.1 環(huán)境配置
Python版本:3.6.4
相關模塊:
pygame模塊;
以及一些Python自帶的模塊。
4.2 創(chuàng)建游戲類
首先,我們來明確一下該游戲包含哪些游戲精靈類:
炸彈類
角色類
墻類
背景類
水果類
4.3 墻和背景類
墻類和背景類很好定義,只需要可以導入圖片,然后把圖片綁定到指定位置就行了:
4.4 水果類
水果類定義其實也差不多,但是不同的水果可以幫助角色恢復不同數(shù)值的生命值:
4.3 角色類
炸彈類和角色類的定義就稍稍復雜一些了。角色類需要根據(jù)玩家或者電腦的指示上下左右移動,同時可以在自己的位置上產(chǎn)生炸彈以及吃水果之后恢復一定數(shù)值的生命值:
角色類定義
角色類移動
AI電腦隨機移動
生成炸彈、吃水果、角色朝向
4.4 炸彈類
定義
爆炸效果
爆炸區(qū)域
4.5 地圖設計
通過一個地圖解析類來解析.map文件,這樣每次切換關卡時只需要重新導入一個新的.map文件就行了,同時這樣也方便游戲后續(xù)進行擴展:
4.6 游戲主循環(huán)
最后,做完準備工作,只差游戲主循環(huán)了。
邏輯很簡單,就是初始化之后導入關卡地圖開始游戲,結束一關之后,判斷是游戲勝利還是游戲失敗,游戲勝利的話就進入下一關,否則就退出主循環(huán),讓玩家選擇是否重新開始游戲。
最近很多粉絲私信獲取Python30個小游戲源碼,但是因為網(wǎng)盤的原因,總是被和諧,所以之后我會在專欄一一公開分享,需要練習的小伙伴記得持續(xù)關注哦~
需要Python學習視頻以及電子書的寶子們,可以看UP主主頁的介紹獲取哦~