最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【Python實訓項目】pygame制作【飛機大戰(zhàn)】

2023-06-08 16:45 作者:下班被游戲打-  | 我要投稿

一、課程設計目的及應用背景

? ? ? ? 根據(jù)課程要求,以及面向?qū)ο蟪绦蛟O計的編程思想,在Windows操作系統(tǒng)環(huán)境下,運用PyCharm編譯程序,以Python語言為開發(fā)語言,最終實現(xiàn)飛機大戰(zhàn)游戲相應的游戲操作功能。Python是一種跨平臺的、開源的、免費的、解釋型的高級編程語言。它具有豐富的、強大的庫, 能夠把其他語言制作的各種模塊很輕松地聯(lián)結(jié)在一起, 所以Python常被稱為“膠水”語言。Python語言近幾年發(fā)展勢頭迅猛, 應用領域也非常廣泛, 在Web編程、圖形處理、黑客編程、大數(shù)據(jù)處理、網(wǎng)絡爬蟲、科學計算和游戲編程等領域都能找到Python的應用。其中Pygame是Python的一個第三方庫, 搭載了基于OpenGL的圖形庫和優(yōu)質(zhì)的音頻庫, 可以快速上手制作2D游戲的原型。Pygame的API比較偏底層, 開發(fā)人員在編程時具有很大的自由度, 同時具有了很強的可定制性。Python語言的研究和發(fā)明主要是為了便于學習和應用, 因此Python語言是開源的, 并且語法非常簡單、容易編寫和理解。本文通過對飛機大戰(zhàn)游戲的設計與分析, 掌握Python語言在游戲開發(fā)領域的優(yōu)勢。


? ? ? ? 飛機大戰(zhàn)游戲設計開發(fā)課題是《面向?qū)ο蟪绦蛟O計(Python)》中面向?qū)ο蟪绦蛟O計的一次運用,主要設計原則如下:

? ? ? ? (1)簡單性,在實現(xiàn)軟件的功能的同時, 盡量讓軟件操作簡單易懂;

? ? ? ? (2)針對性,基于Python軟件, 實現(xiàn)飛機大戰(zhàn)游戲的各種要求;

? ? ? ? (3)一致性,類型、變量和其他元素的命名規(guī)則保持一致;


? ? ? ? 完成同樣的功能應該盡量使用同樣的元素;界面元素的外觀風格、擺放位置在同一個界面和不同界面之間是一致的??梢允蛊浠绢悗霵ygame的基本函數(shù)和功能模塊的調(diào)用操作實現(xiàn)python語言在課程設計中的運用。

? ? ? ? 通過對飛機大戰(zhàn)游戲設計的實現(xiàn),要求我們進一步理解和掌握課堂上所學各種基本類型的變量、數(shù)據(jù)類型、類、用戶輸入和文件操作實現(xiàn)面向?qū)ο蟮挠螒蜷_發(fā),以及它們在程序中的使用方法;掌握Python軟件設計的基本內(nèi)容和設計方法,并培養(yǎng)學生進行規(guī)范化軟件設計的能力;掌握使用各種計算機資料和有關參考資料,提高我們進行程序設計的基本能力,逐步熟悉程序設計的方法,并養(yǎng)成良好的編程習慣。

? ? ? ? 本次設計為了使飛機大戰(zhàn)游戲具有更加豐富的功能,基于面向?qū)ο蠛兔嫦蜻^程的方法,使用Python編程語言提供資源結(jié)構(gòu),以Pygame模塊對游戲進行研發(fā),提出了飛機大戰(zhàn)游戲開發(fā)方案。通過各種優(yōu)化調(diào)整,實現(xiàn)了飛機的飛行移動、擊落,計分等功能,實現(xiàn)了飛機大戰(zhàn)的開發(fā),增加游戲體驗。

二、課程設計內(nèi)容

開發(fā)一款飛機大戰(zhàn)游戲,要求:


(1)實現(xiàn)飛機的移動、子彈發(fā)射,對本次游戲有一個初步的編寫及認識。

(2)飛機的持續(xù)按鍵移動和飛機自爆優(yōu)化。

(3)進行基類的抽取,使代碼更具有層次性和簡化重復代碼。

(4)對判斷以及刪除越界子彈、敵機發(fā)射子彈進行擴展優(yōu)化。


三、課程設計代碼實現(xiàn)

1. 創(chuàng)建子彈類

? ? ? ? 該項目可采用面向?qū)ο缶幊趟悸愤M行設計,對于不同的對象可設計3個不同的類,分別是子彈類、玩家飛機類和敵機類。


? ? ? ? 子彈類主要實現(xiàn)的功能是:顯示子彈、子彈移動和處理子彈越界問題。


(1)顯示子彈


? ? ? ? 首先需要確定顯示子彈的位置,當按下空格鍵時,代表玩家飛機要發(fā)射一枚子彈,因此,需要在玩家飛機的頂部位置顯示子彈。并且無論玩家飛機左右移動到什么位置,只要按下空格鍵,子彈生成的初始位置都位于玩家飛機的頂部。因此,子彈的初始位置與玩家飛機的位置相關。


? ? ? ? 首先可定義一個表示子彈的類Bullet,在該類中定義一個構(gòu)造方法用于初始化數(shù)據(jù),然后定義一個用于顯示子彈的方法,具體代碼如下。

2)子彈移動

????????在Bullet類中添加一個子彈移動的方法move,讓子彈每移動一次,y值減10,具體代碼如下。

3)處理子彈越界問題

????????在Bullet類中添加一個judge方法,用于判斷子彈是否發(fā)射到屏幕以外,具體代碼如下。

2.創(chuàng)建玩家飛機類

? ? ? ? 玩家飛機類中主要實現(xiàn)的功能是:顯示玩家飛機、控制玩家飛機左右移動以及發(fā)射子彈。

(1)顯示玩家飛機

? ? ? ? 在窗口中要顯示玩家飛機,可以根據(jù)玩家飛機圖片的名稱創(chuàng)建圖像,再把該圖像顯示到屏幕的設定位置。

? ? ? ? 首先定義一個表示玩家飛機的類Aircraft_obj,在該類中定義一個構(gòu)造方法用于初始化數(shù)據(jù),然后定義一個用于顯示飛機的方法。在該類中還需要玩家飛機控制發(fā)射子彈,因此,在構(gòu)造方法中還需要添加一個列表,用于存儲玩家飛機發(fā)射的所有子彈,并且一旦遍歷這個列表,就會將子彈顯示到飛機對象的上方。具體代碼如下。

2)控制玩家飛機左右移動

????????玩家飛機具有向左移動和向右移動的功能,這兩個功能可以通過在方法中改變坐標的x值進行實現(xiàn)。還需要控制飛機不能移出窗口。具體代碼如下。??

3)控制玩家飛機發(fā)射子彈

????????在玩家飛機類中創(chuàng)建fire()方法,將所有玩家飛機發(fā)射的子彈存儲到飛機對象的屬性列表中,具體代碼如下。

3. 創(chuàng)建敵機類

? ? ? ? 敵機類中主要實現(xiàn)的功能是:顯示敵機、敵機左右移動以及敵機被擊中并爆炸。

(1)初始化敵機

? ? ? ? 跟玩家飛機類似,可定義一個表示敵機的類EnemyPlane。同樣,敵機應該有默認的位置、呈現(xiàn)圖像的窗口、敵機圖片、在放爆炸圖片的列表等屬性,具體代碼如下。

(2)敵機左右移動


? ? ? ? 當程序啟動后,敵機開始在窗口的項部做直線運行,直到碰到屏幕的邊緣后向反方向做真線運行。


? ? ? ? 可以為EnemyPlane(敵機)類添加一個移動敵機的方法move,在該方法中根據(jù)飛機移動的方向改變x對應的坐標值,再根據(jù)x的值限定敵機移動的范圍,只要超過屏幕的寬度范圍,就改變飛機運行的方向,具體代碼如下。

3)敵機爆炸

????????敵機被子彈擊中后會爆炸,爆炸過程中所需要用到的圖片保存在bomb lists列表中,此處可定義一個方法用于添加圖片到列表中,具體代碼如下。

? 接下來定義一個判斷爆炸的方法,只要滿足以下3個條件中的任意一個即可實現(xiàn)爆炸:

? ? ? ? (1)子彈橫坐標在敵機橫坐標的區(qū)域中,并且子彈y坐標小于敵機圖片的高度;

? ? ? ? (2)子彈最右側(cè)坐標等于敵機最左側(cè)坐標,并且子彈y坐標小于敵機圖片的高度:

? ? ? ? (3)子彈最左側(cè)塵標等于敵機最右側(cè)坐標,并且子彈y坐標小于敵機圖片的高度。具體代碼如下

顯示敵機的方法與顯示玩家飛機有所不同,需要判斷是否已經(jīng)被擊中,如果已被擊中,需要顯示爆炸的圖片后退出程序,如果沒有被擊中,顯示敵機圖片,具體代碼如下。

4.檢查鍵盤輸入

? ? ? ? 如果想要獲取鍵盤和鼠標產(chǎn)生的事件,就需要使用for循環(huán)遍歷事件列表,取出每個事件與eventtype《事件類型)進行比較。如果event.type的值為QUIT,表示用戶按下關閉按鈕,此時就要退出程序:如果event.type的值為KEYDOWN,表示用戶使用了鍵盤,需要判斷按下的是哪個鍵,然后進行鍵盤事件的處理。具體代碼如下。

5.創(chuàng)建主模塊

? ? ? ? 飛機大戰(zhàn)的整個場景需要一個窗口作為載體,顯示游戲中的畫面。這里準備了一張圖片用作游戲界面的背景,并在窗口中進行顯示。


? ? ? ? 在主模塊中,需要創(chuàng)建玩家飛機對象和敵機對象、顯示各個對象、判斷敵機是否被擊中、調(diào)用敵機移動方法讓敵機移動、調(diào)用事件處理函數(shù)進行事件處理。具體代碼如下。

四、測試結(jié)果


【Python實訓項目】pygame制作【飛機大戰(zhàn)】的評論 (共 條)

分享到微博請遵守國家法律
旌德县| 祁连县| 静乐县| 西青区| 修文县| 陆川县| 阿拉尔市| 徐州市| 石首市| 永靖县| 彭阳县| 梧州市| 平湖市| 新竹市| 鄂尔多斯市| 龙川县| 彭阳县| 淮滨县| 怀仁县| 隆回县| 博乐市| 开原市| 仪征市| 六安市| 苍南县| 邓州市| 班戈县| 平阴县| 来宾市| 德阳市| 禹城市| 迭部县| 新田县| 来凤县| 内黄县| 花莲市| 赣榆县| 临朐县| 高州市| 阜南县| 资兴市|