淺談pygame編寫外星人入侵游戲第一步(屏幕上繪制飛機)......


本人小白 剛開始學習python半月,到目前將python基礎語法跑了一遍,不算透徹,只是有一些映像......

於是學着做外星人入侵游戲,想從項目中深度學習,直接上目前的效果圖:

----------------------------------------到目前實現以下圖片效果------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------------

實現以上效果用了一下代碼:

import pygame
import sys
pygame.init()
screen=pygame.display.set_mode((400,400))
pygame.display.set_caption("測試窗口打開")
bg_color=(0,255,255)

while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
sys.exit()
else:
image=pygame.image.load("images/ship.bmp")

hero_rect=image.get_rect()
screen_rect=screen.get_rect()
hero_rect.centerx =screen_rect.centerx
hero_rect.bottom=screen_rect.bottom
screen.fill(bg_color)
screen.blit(image,hero_rect)
pygame.display.flip(pygame.init()

--------------------------------------------------------------------------------------------------------------------------------
初步學習用pygame 為了直接出效果沒有將代碼分開寫直接寫在一個模塊中 在此過程中本人對rect的用法相當迷惑,不停的在網上查相關資料,
對pygame編寫外星人入侵游戲的第一步基本語法才基本明白:
import pygame
import sys
以上兩句導入語句 import sys具體作用為導入sys模塊,為之后程序使用sys.exit()而導入
pygame.init() 我的理解為python對pygame的自檢過程 在此程序中如此條代碼如果沒有,程序同樣可以無報錯運行,
理解為所謂自檢過程便是python檢測pygame的運行組件是否正常。

以上圖片為cmd 中運行python 並導入pygame 並運行pygame.init()啟動了pygame自檢 結果為(6,0) 小白的理解為pygame有6個組件需要檢測,6個都通過,
自檢通過可以運行pygame,到目前未發現有其他運行結果
screen=pygame.display.set_mode((500,400))此處為建一個游戲窗口 大小為寬500,高400(500,400)以元組方式賦值

pygame.display.set_caption("測試窗口打開")此處為設置窗口標題, 其中pygame.display為pygame的基礎屬性可以直接調用
bg_color=(0,255,255)此處為游戲窗口的填充色,在程序后面調用screen.fill(bg_color),
---------------------------------------------------------------
while True:    #開始游戲的主循環無限循環直到游戲關閉
for event in pygame.event.get():#監視鍵盤和鼠標的事件
#print(event.type) 啟用這一行,你將會在觸動鼠標 鍵盤時 看到會觸發那些事件並顯示出來,你會更明白
if event.type==pygame.QUIT:#QUIT必須大寫
sys.exit()#如果觸發關閉窗口事件 便退出程序
--------------------------------------------------------------------------------------------
image=pygame.image.load("images/ship.bmp") 導入飛機圖片
--------------------------------------------------------------------------------------------------
重點放在下面代碼做闡述:
1.hero_rect=image.get_rect()此處取的飛機圖片的矩形大小,以飛機圖像(導入圖像),可能不是一個規則的矩形,此語句會根據飛機圖像建立一個包圍飛機的最小
矩形:寬=136,高=168(圖像屬性尺寸),如下圖為飛機的圖像及屬性:

2.screen_rect=screen.get_rect()此處取得游戲窗口屏幕的矩形及程序開始定義的游戲窗口寬與高,游戲窗口的矩形為了以后移動飛機位置取得坐標,此時繪制如下圖位置:
飛機圖像矩形位置坐標為:(left=0,top=0,width=136,heigh=168)

3.hero_rect.centerx =screen_rect.centerx將飛機圖片的矩形移動到游戲窗口x軸的中心,(即 centery 表示的游戲窗口軸的中心)橫向長度代表x軸
豎向表示y軸
沒有這一句,運行程序飛機將出現在游戲窗口的左上角處如上圖,
現將飛機移動到游戲窗口的上端中間處下圖:

4.hero_rect.bottom=screen_rect.bottom將飛機圖片的矩形移動到游戲窗口的低端 在次將飛機從x軸的中間(即將飛機從游戲窗口上端的中間處,
移動到游戲窗口低端的中間如圖)下圖

3,4兩條語句的繪制 便將飛機的圖片移動到游戲窗口的低端中間
5.screen.fill(bg_color)顏色填充游戲窗口 bg_color為之前配出的顏色變量
6.screen.blit(image,hero_rect)將飛機圖片繪制到屏幕上
第6句表示將要繪制的圖片image,繪制到screen(屏幕)的hero_rect位置,小白在此犯了個錯誤,先繪制圖像到屏幕上,在進行窗口填充,你將看不到飛機
一定要先進行窗口填充(screen.fill(bg_color))在進行圖像繪制

pygame.display.flip()讓最近繪制的游戲窗口 顯示在電腦屏幕上
————————————————
總結:在此游戲制作中,飛機在游戲窗口畫面顯示為一個矩形 ,如果把游戲窗口填充色改為飛機矩形填充色 效果會更好,首先建了個游戲窗口screen,之后用get_rect()

分別取得飛機及屏幕的矩形坐標、在此刻飛機已經被繪制到屏幕的(left=0,top=0,width="飛機寬帶",heigh='飛機高度')位置,上圖中空白處為飛機的矩形,
黃色區域為游戲窗口區域,之后用以下
hero_rect.centerx =screen_rect.centerx
hero_rect.bottom=screen_rect.bottom改變飛機在游戲屏幕中的位置,最后用
pygame.display.flip()把繪制好的游戲窗口在電腦屏幕上顯示出來。由此游戲窗口好像我們創建的一塊畫布,之后我們按需要將元素畫好在畫布上,並調整好相對位置后,
在顯示在屏幕上供用戶使用。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM