Pygame實現(xiàn)游戲最小系統(tǒng)功能詳解
前言
“我有一個夢想,那就是有生之年做出一款屬于自己的游戲。”
不知道屏幕前的你是否曾經(jīng)有和我一樣的想法,總覺得市面上的游戲不完全符合你的胃口,想要自己開發(fā)出一款屬于自己的獨有的游戲。
此時,如果你正好學了Python,那么你的機會來了,python也是可以做游戲的!本篇文章將介紹Python一個非常有趣又功能強大庫,它所擁有的模塊幾乎包含了2D游戲常用功能的實現(xiàn),讓你用Python也能開發(fā)出一款小型的2d游戲,它的名字就是—— pygame。
一、什么是pygame
Pygame是一個專門用來開發(fā)游戲的 Python 模塊,主要為開發(fā)、設計 2D 電子游戲而生,具有免費、開源,支持多種操作系統(tǒng),具有良好的跨平臺性等優(yōu)點。
Pygame它提供了諸多操作模塊,比如圖像模塊(image)、聲音模塊(mixer)、輸入/輸出(鼠標、鍵盤、顯示屏)模塊等。簡單來說,如果你使用pygame,理論上可以開發(fā)設計市面上所有的2d類型游戲(僅僅是理論上)。
但是,實際上,我學習pygame并不是說要用它來開發(fā)一款完美的游戲,pygame太過于底層,許多功能都要自己來封裝實現(xiàn)。也許你用pygame開發(fā)一款超級瑪麗時間,別人都能學會C#用unity開發(fā)和平精英了(夸張)。
那么既然如此,為什么還要來學它?
1.1 學習pygame的用處
Pygame適合小型2d游戲開發(fā),比如于飛機大戰(zhàn)、貪吃蛇、掃雷等,游戲越大,開發(fā)越困難。所以,學習pygame你可以復刻一款小時候玩的經(jīng)典游戲,比如超級瑪麗,魂斗羅之類的,然后更改一些游戲角色及內(nèi)容,哄哄家里的弟弟妹妹(就是裝X唄)。
更重要的一點,我希望你能夠通過學習pygame深入理解python面向?qū)ο蟮乃枷?,python面向?qū)ο笫沁@門語言的精髓之一。掌握python面向?qū)ο蟮乃枷?,也是你成功跨過python基礎的標志之一,對于你后面選擇的學習方向(web開發(fā),自動化,爬蟲等等)的入門非常有幫助。有了python面向?qū)ο蟮睦喂袒A,學習python高級的東西你會覺得也就那么回事,有一法破萬法的效果。
當然,值得一提的是如果你真的對游戲開發(fā)感興趣,又有python基礎,那么通過pygame你可以初步了解關于游戲開發(fā)的一些基礎知識,等到用pygame開發(fā)一兩個小游戲,再來思考一下自己適不適合游戲開發(fā),畢竟游戲開發(fā)的精髓都是相通的,那些高級游戲引擎只是把一些基礎功能封裝好了讓你用,pygame只是需要你用自己的手去打造自己的工具箱。
1.2 pygame里的游戲世界
在講解具體代碼之前,還是要科普一些pygame里游戲的基礎知識。
你印象中的2d游戲由哪些成分構成?首先要有一個窗口,它規(guī)定游戲畫面占你的屏幕的尺寸大小,也可以設計游戲名字,背景等等。其次就是各種場景,一個游戲可以看做是由許多個場景組成的,比如超級瑪麗的開始菜單場景,第一關,第二關等等。場景要有內(nèi)容,比如背景,主角,敵人,子彈,物品(如超級瑪麗的磚塊等等)。
在后面就是主角與敵人或者其它對象的各種交互動作,如白色瑪麗會發(fā)射子彈,踩到敵人壓扁對方等等。最后則是貫穿場景的各種音效,聲音等等。
二、pygame簡單講解
本篇文章不打算太深入pygame,旨在增加你對python的理解,以及吸引你對pygame游戲開發(fā)的一點點興趣,或者你之前學過pygame但忘記了,希望本篇文章可以幫到你。如果你想要系統(tǒng)學習pygame,建議先看B站免費教程,然后自己通過官網(wǎng)深入學pygame。
廢話不多說,我將通過自己初學時學的一個例子來讓你實現(xiàn)pygame的初步入門。
2.1 安裝pygame
pip install pygame
一直都是通過pycharm安裝python第三方庫,簡直不要太爽.
2.2 游戲最小系統(tǒng)
什么是游戲最小系統(tǒng)(不知道有沒有這個名詞)?可以理解為游戲能夠運行不報錯的最小代碼。
# 導入庫 import pygame # 初始化操作,游戲開始之前,運行該代碼進行初始化 pygame.init() # 創(chuàng)建游戲窗口,注意設置了window這個變量 window = pygame.display.set_mode((600,400)) # 設置游戲標題 pygame.display.set_caption('游戲最小系統(tǒng)') # 給窗口設置背景顏色 window.fill((255,255,255))
運行上面代碼你會發(fā)現(xiàn)左上角出現(xiàn)一個窗口,然后一閃即過,這是正常的。這里就要思考python代碼的運行,通過執(zhí)行上述代碼,你創(chuàng)建了一個黑色窗口,但是當代碼執(zhí)行完會發(fā)生什么,當然是python自動退出了。所以你要使用一定的方法不讓代碼結束運行,這就要添加“死循環(huán)”了,這很好理解,while true 會一遍又一遍的運行里面的代碼而不退出。
# 保持游戲運行狀態(tài)(游戲循環(huán)) while True: # 檢測事件發(fā)生,先把事件全部拿過來,再看發(fā)生的是哪一件事。 for event in pygame.event.get(): # 檢測關閉按鈕被點擊的事件 if event.type == pygame.QUIT: # 如果按下屏幕里的X號就會退出 exit()
看到循環(huán)里面添加的for循環(huán)及if語句嗎?它們有什么作用。由于循環(huán)會一直執(zhí)行,里面的代碼會一遍又一遍進行檢測,所以在里面就可以有很多操作了。這就是之前提到的主角與敵人或其它物品的交互部分,代碼會一直檢測發(fā)生了什么事情,并作出反應,也包括開發(fā)游戲常說的碰撞檢測。
所以結合上面,最小系統(tǒng)就出來了,它只是一個黑屏,但是它是游戲的基礎框架。
import pygame # 初始化操作 pygame.init() # 創(chuàng)建游戲窗口 window = pygame.display.set_mode((600,400)) # 設置游戲標題 pygame.display.set_caption('游戲最小系統(tǒng)') # 設置背景顏色 window.fill((255,255,255)) # ========游戲開始頁面靜態(tài)效果========== # 保持游戲運行狀態(tài)(游戲循環(huán)) while True: # ===========游戲幀的刷新=========== # 檢測事件 for event in pygame.event.get(): # 檢測關閉按鈕被點擊的事件 if event.type == pygame.QUIT: # 退出 exit()
到此這篇關于Pygame實現(xiàn)游戲最小系統(tǒng)功能詳解的文章就介紹到這了,更多相關Pygame游戲系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python數(shù)據(jù)處理pandas讀寫操作IO工具CSV解析
這篇文章主要為大家介紹了Python?pandas數(shù)據(jù)讀寫操作IO工具之CSV使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06Pytorch卷積神經(jīng)網(wǎng)絡resent網(wǎng)絡實踐
這篇文章主要為大家介紹了Pytorch卷積神經(jīng)網(wǎng)絡resent網(wǎng)絡實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05python代碼打印100-999之間的回文數(shù)示例
今天小編就為大家分享一篇python代碼打印100-999之間的回文數(shù)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11pyqt4教程之實現(xiàn)windows窗口小示例分享
這篇文章主要介紹了pyqt4實現(xiàn)windows窗口小示例,需要的朋友可以參考下2014-03-03將Pytorch模型從CPU轉換成GPU的實現(xiàn)方法
今天小編就為大家分享一篇將Pytorch模型從CPU轉換成GPU的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08