標籤:執行個體 pygame 繼承 最好 重新整理 遊戲迴圈 mod mode 視覺
在開始正式編寫飛機大戰遊戲之前,對pygame所提供的模組進行學習,以下代碼只是驗證了一些功能,並不能進行飛機大戰遊戲。
在開始正式的編寫代碼之前一定一定要先調用pygame.init()方法,並相應的調用pygame.quit()方法,這裡要養成好的習慣,把成對出現的代碼一併寫好,以免最後忘記寫,而導致錯誤,然後在pygame.init()與pygame.quit()之間寫遊戲代碼。
import pygame #匯入pygame模組,pygame是專門設計用來設計遊戲的python模組。from plane_sprites import* #此模組繼承了pygame中sprite類中Sprite方法,有了此模組後不需要每次都進行處理映像載入、繪製映像等代碼pygame.init()#載入pygame的模組screen = pygame.display.set_mode((480,850))#利用set_mode方法建立遊戲的主視窗,set_mode方法有三個預設參數,第一個位元組,指定螢幕的大小,預設螢幕與視窗大小一致,第二個為標誌位,預設為0,第三個為深度,預設也為0,注意set_mode方法有返回結果,返回一個Surface對象,需要變數記錄此返回結果,此程式中由screen接收返回結果,後續的映像繪製都在此視窗上進行background = pygame.image.load("./image/background.png")#調用load方法載入背景映像,load方法中傳入背景映像所在位置,.表示目前的目錄
screen.blit(background,(0,0)) #screen調用blit方法,在剛剛建立的視窗中繪製背景映像,bilt方法需要傳入兩個參數第一個為背景映像,第二個為背景映像繪製的位置,此參數可以為元組,也可以為矩形對象,如果想要看到繪製的映像還需要調用display模組中的update()方法,此方法更新螢幕顯示,所以最好一起寫出來兩個方法hero = pygame.image.load("./image/hero.gif")#載入英雄圖片screen.blit(hero,(200,400))#在制定位置繪製英雄圖片pygame.display.update()#更新螢幕顯示 ,可以在視窗上看到剛剛繪製英雄的圖片,一定要記住無論繪製什麼映像最後都要調用此方法,否則在遊戲視窗中看不到所繪製的映像clock = pygame.time.Clock()#建立時鐘對象hero_rect = pygame.Rect(200,400,100,124)#調用Rect()方法,Rect()方法用來描述矩形對象,接收4個參數分別是位置參數,x,y代表繪製映像的位置,以及矩形的寬高,用hero_rect變數來記錄英雄圖片的位置enemy0 = GameSprite("./image/enemy0_down1.png")#GameSprite類的執行個體化,並傳入相應參數,speed為預設值enemy1 = GameSprite("./image/enemy0_down2.png",speed = 2)enemy_group = pygame.sprite.Group(enemy0,enemy1)#調用精靈組方法while True:#遊戲迴圈,遊戲正式開始,產生相應的動畫效果,(所謂動畫效果就是靜止圖片快速移動,產生的視覺效果就是連續的,所以就需要調用一種方法使映像快速移動,快速更新)以上都是遊戲的準備工作,下面就是可以是圖片可以連續移動的代碼 clock.tick(60)#遊戲重新整理幀率,tick()方法會根據上次被調用的時間,設定迴圈中的延時,tick()可以指定迴圈體內部的代碼執行頻率 hero_rect.y -= 1#使英雄圖片向上移動 if hero_rect.y <= -124: #判斷英雄圖片是否移出螢幕,如果移出則將英雄圖片重新放到背景圖片底部 hero_rect.y = 800 screan.blit(background,(0,0)) #重新繪製背景圖片,然後把每一張圖片重新繪製到新的背景圖片上,否則會出現重影現象 screan.blit(hero ,hero_rect)#在hero_rect上繪製英雄映像,hero_rect實際是記錄英雄圖片移動的每一幀
enemy_group.update() #調用精靈組中update方法,使精靈組中所有精靈調用update方法 enemy_group.draw(screen) #調用精靈組中的draw方法,使精靈組中所有精靈繪製到screen上 pygame.display.update() #更新螢幕顯示pygame.quit()#卸載所有pygame模組
python學習——飛機大戰之初期