如何用Python和Pygame模塊構(gòu)建一個(gè)游戲框架,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
目前成都創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、雙鴨山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的骰子游戲來(lái)探究 Python?,F(xiàn)在是來(lái)從零制作你自己的游戲的時(shí)間。
這次,我將展示如何使用 Python 模塊 Pygame 來(lái)創(chuàng)建一個(gè)圖形化游戲。它將需要幾篇文章才能來(lái)得到一個(gè)確實(shí)做成一些東西的游戲,但是到這系列的結(jié)尾,你將更好地理解如何查找和學(xué)習(xí)新的 Python 模塊和如何從其基礎(chǔ)上構(gòu)建一個(gè)應(yīng)用程序。
在開(kāi)始前,你必須安裝 Pygame。
有幾種方法來(lái)安裝 Python 模塊,但是最通用的兩個(gè)是:
從你的發(fā)行版的軟件存儲(chǔ)庫(kù)
使用 Python 的軟件包管理器 pip
兩個(gè)方法都工作的很好,并且每一個(gè)都有它自己的一套優(yōu)勢(shì)。如果你是在 Linux 或 BSD 上開(kāi)發(fā),可以利用你的發(fā)行版的軟件存儲(chǔ)庫(kù)來(lái)自動(dòng)和及時(shí)地更新。
然而,使用 Python 的內(nèi)置軟件包管理器可以給予你控制更新模塊時(shí)間的能力。而且,它不是特定于操作系統(tǒng)的,這意味著,即使當(dāng)你不是在你常用的開(kāi)發(fā)機(jī)器上時(shí),你也可以使用它。pip
的其它的優(yōu)勢(shì)是允許本地安裝模塊,如果你沒(méi)有正在使用的計(jì)算機(jī)的管理權(quán)限,這是有用的。
如果 Python 和 Python3 都安裝在你的系統(tǒng)上,你想使用的命令很可能是 pip3
,它用來(lái)區(qū)分 Python 2.x 的 pip
的命令。如果你不確定,先嘗試 pip3
。
pip
命令有些像大多數(shù) Linux 軟件包管理器一樣工作。你可以使用 search
搜索 Python 模塊,然后使用 install
安裝它們。如果你沒(méi)有你正在使用的計(jì)算機(jī)的管理權(quán)限來(lái)安裝軟件,你可以使用 --user
選項(xiàng)來(lái)僅僅安裝模塊到你的家目錄。
$ pip3 search pygame[...]Pygame (1.9.3) - Python Game Developmentsge-pygame (1.5) - A 2-D game engine for Pythonpygame_camera (0.1.1) - A Camera lib for PyGamepygame_cffi (0.2.1) - A cffi-based SDL wrapper that copies the pygame API.[...]$ pip3 install Pygame --user
Pygame 是一個(gè) Python 模塊,這意味著它僅僅是一套可以使用在你的 Python 程序中的庫(kù)。換句話說(shuō),它不是一個(gè)像 IDLE 或 Ninja-IDE 一樣可以讓你啟動(dòng)的程序。
一個(gè)電子游戲需要一個(gè)背景設(shè)定:故事發(fā)生的地點(diǎn)。在 Python 中,有兩種不同的方法來(lái)創(chuàng)建你的故事背景:
設(shè)置一種背景顏色
設(shè)置一張背景圖片
你的背景僅是一張圖片或一種顏色。你的電子游戲人物不能與在背景中的東西相互作用,因此,不要在后面放置一些太重要的東西。它僅僅是設(shè)置裝飾。
要開(kāi)始一個(gè)新的 Pygame 工程,先在計(jì)算機(jī)上創(chuàng)建一個(gè)文件夾。游戲的全部文件被放在這個(gè)目錄中。在你的工程文件夾內(nèi)部保持所需要的所有的文件來(lái)運(yùn)行游戲是極其重要的。
一個(gè) Python 腳本以文件類型、你的姓名,和你想使用的許可證開(kāi)始。使用一個(gè)開(kāi)放源碼許可證,以便你的朋友可以改善你的游戲并與你一起分享他們的更改:
#!/usr/bin/env python3# by Seth Kenlon ## GPLv3# This program is free software: you can redistribute it and/or# modify it under the terms of the GNU General Public License as# published by the Free Software Foundation, either version 3 of the# License, or (at your option) any later version.## This program is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU# General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program. If not, see <http://www.gnu.org/licenses/>.
然后,你告訴 Python 你想使用的模塊。一些模塊是常見(jiàn)的 Python 庫(kù),當(dāng)然,你想包括一個(gè)你剛剛安裝的 Pygame 模塊。
import pygame # 加載 pygame 關(guān)鍵字import sys # 讓 python 使用你的文件系統(tǒng)import os # 幫助 python 識(shí)別你的操作系統(tǒng)
由于你將用這個(gè)腳本文件做很多工作,在文件中分成段落是有幫助的,以便你知道在哪里放代碼。你可以使用塊注釋來(lái)做這些,這些注釋僅在看你的源文件代碼時(shí)是可見(jiàn)的。在你的代碼中創(chuàng)建三個(gè)塊。
'''Objects''' # 在這里放置 Python 類和函數(shù) '''Setup''' # 在這里放置一次性的運(yùn)行代碼 '''Main Loop''' # 在這里放置游戲的循環(huán)代碼指令
接下來(lái),為你的游戲設(shè)置窗口大小。注意,不是每一個(gè)人都有大計(jì)算機(jī)屏幕,所以,***使用一個(gè)適合大多數(shù)人的計(jì)算機(jī)的屏幕大小。
這里有一個(gè)方法來(lái)切換全屏模式,很多現(xiàn)代電子游戲都會(huì)這樣做,但是,由于你剛剛開(kāi)始,簡(jiǎn)單起見(jiàn)僅設(shè)置一個(gè)大小即可。
'''Setup'''worldx = 960worldy = 720
在腳本中使用 Pygame 引擎前,你需要一些基本的設(shè)置。你必須設(shè)置幀頻,啟動(dòng)它的內(nèi)部時(shí)鐘,然后開(kāi)始 (init
)Pygame 。
fps = 40 # 幀頻ani = 4 # 動(dòng)畫(huà)循環(huán)clock = pygame.time.Clock()pygame.init()
現(xiàn)在你可以設(shè)置你的背景。
在你繼續(xù)前,打開(kāi)一個(gè)圖形應(yīng)用程序,為你的游戲世界創(chuàng)建一個(gè)背景。在你的工程目錄中的 images
文件夾內(nèi)部保存它為 stage.png
。
這里有一些你可以使用的自由圖形應(yīng)用程序。
Krita 是一個(gè)專業(yè)級(jí)繪圖素材模擬器,它可以被用于創(chuàng)建漂亮的圖片。如果你對(duì)創(chuàng)建電子游戲藝術(shù)作品非常感興趣,你甚至可以購(gòu)買(mǎi)一系列的游戲藝術(shù)作品教程。
Pinta 是一個(gè)基本的,易于學(xué)習(xí)的繪圖應(yīng)用程序。
Inkscape 是一個(gè)矢量圖形應(yīng)用程序。使用它來(lái)繪制形狀、線、樣條曲線和貝塞爾曲線。
你的圖像不必很復(fù)雜,你可以以后回去更改它。一旦有了它,在你文件的 Setup 部分添加這些代碼:
world = pygame.display.set_mode([worldx,worldy])backdrop = pygame.image.load(os.path.join('images','stage.png').convert())backdropbox = world.get_rect()
如果你僅僅用一種顏色來(lái)填充你的游戲的背景,你需要做的就是:
world = pygame.display.set_mode([worldx,worldy])
你也必須定義顏色以使用。在你的 Setup 部分,使用紅、綠、藍(lán) (RGB) 的值來(lái)創(chuàng)建一些顏色的定義。
'''Setup''' BLUE = (25,25,200)BLACK = (23,23,23 )WHITE = (254,254,254)
至此,你理論上可以啟動(dòng)你的游戲了。問(wèn)題是,它可能僅持續(xù)了一毫秒。
為證明這一點(diǎn),保存你的文件為 your-name_game.py
(用你真實(shí)的名稱替換 your-name
)。然后啟動(dòng)你的游戲。
如果你正在使用 IDLE,通過(guò)選擇來(lái)自 “Run” 菜單的 “Run Module” 來(lái)運(yùn)行你的游戲。
如果你正在使用 Ninja,在左側(cè)按鈕條中單擊 “Run file” 按鈕。
你也可以直接從一個(gè) Unix 終端或一個(gè) Windows 命令提示符中運(yùn)行一個(gè) Python 腳本。
$ python3 ./your-name_game.py
如果你正在使用 Windows,使用這命令:
py.exe your-name_game.py
啟動(dòng)它,不過(guò)不要期望很多,因?yàn)槟愕挠螒颥F(xiàn)在僅僅持續(xù)幾毫秒。你可以在下一部分中修復(fù)它。
除非另有說(shuō)明,一個(gè) Python 腳本運(yùn)行一次并僅一次。近來(lái)計(jì)算機(jī)的運(yùn)行速度是非常快的,所以你的 Python 腳本運(yùn)行時(shí)間會(huì)少于 1 秒鐘。
為強(qiáng)制你的游戲來(lái)處于足夠長(zhǎng)的打開(kāi)和活躍狀態(tài)來(lái)讓人看到它(更不要說(shuō)玩它),使用一個(gè) while
循環(huán)。為使你的游戲保存打開(kāi),你可以設(shè)置一個(gè)變量為一些值,然后告訴一個(gè) while
循環(huán)只要變量保持未更改則一直保存循環(huán)。
這經(jīng)常被稱為一個(gè)“主循環(huán)”,你可以使用術(shù)語(yǔ) main
作為你的變量。在你的 Setup 部分的任意位置添加代碼:
main = True
在主循環(huán)期間,使用 Pygame 關(guān)鍵字來(lái)檢查鍵盤(pán)上的按鍵是否已經(jīng)被按下或釋放。添加這些代碼到你的主循環(huán)部分:
'''Main loop'''while main == True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit(); sys.exit() main = False if event.type == pygame.KEYDOWN: if event.key == ord('q'): pygame.quit() sys.exit() main = False
也是在你的循環(huán)中,刷新你世界的背景。
如果你使用一個(gè)圖片作為背景:
world.blit(backdrop, backdropbox)
如果你使用一種顏色作為背景:
world.fill(BLUE)
***,告訴 Pygame 來(lái)重新刷新屏幕上的所有內(nèi)容,并推進(jìn)游戲的內(nèi)部時(shí)鐘。
pygame.display.flip() clock.tick(fps)
保存你的文件,再次運(yùn)行它來(lái)查看你曾經(jīng)創(chuàng)建的最無(wú)趣的游戲。
退出游戲,在你的鍵盤(pán)上按 q
鍵。
看完上述內(nèi)容,你們掌握如何用Python和Pygame模塊構(gòu)建一個(gè)游戲框架的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站名稱:如何用Python和Pygame模塊構(gòu)建一個(gè)游戲框架
網(wǎng)站地址:http://muchs.cn/article34/pdjope.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、小程序開(kāi)發(fā)、網(wǎng)站改版、域名注冊(cè)、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)