python飛機大戰系列文章(按順序)
(一)通過pygame 將自己的圖像添加到遊戲中
(二)通過pygame讓遊戲人物 動起來
(三)通過pygame處理用戶的鼠標鍵盤操作(事件和監聽
(四)詳解pygame中的精靈和精靈組
(五)通過pygame搭建遊戲框架
(六)通過pygame讓遊戲背景圖像實現交替滾動
(七)通過pygame來設置飛機大戰中 敵機 的速度、位置等
(八)通過pygame來操控遊戲人物的移動
(九)通過pygame使遊戲人物發射子彈
(十)通過pygame來進行碰撞檢測
事件和監聽
首先,先的知道什麼是事件event
- 就是遊戲啓動後,用戶針對遊戲所做的操作
- 例如:點擊關閉按鈕,點擊鼠標,按下鍵盤
再者,要知道什麼是監聽
- 監聽是在遊戲循環中,判斷用戶的具體操作
- 只有捕獲到用戶具體的操作,纔能有針對性的做出響應
接下來,就是代碼
- pygame中通過
pygame.event.get()
可以獲得用戶當前所做的所用操作的事件列表
代碼如下:
import pygame
pygame.init()
#創建遊戲窗口 大小爲480 * 700
#繪製背景圖像
screen = pygame.display.set_mode((480,700))
#加載圖像數據
bg = pygame.image.load(r'.\images\background.png')
#通過blit來繪製圖像,從遊戲窗口screen的(0,0)處開始繪製
screen.blit(bg, (0,0))
#繪製自己的小飛機
hero = pygame.image.load(r'.\images\me1.png')
screen.blit(hero, (150,300))
#在繪製完所有圖像後,再統一調用update方法
pygame.display.update()
#創建時鐘對象
clock = pygame.time.Clock()
#定義rect記錄飛機的初始位置,102,126分別爲飛機圖片的寬高
hero_rect = pygame.Rect(150, 300, 102, 126)
while True:
clock.tick(60)
#捕獲事件
event_list = pygame.event.get()
if len(event_list) > 0:
print(event_list)
#修改飛機的位置
hero_rect.y -= 1
#判斷飛機位置
if hero_rect.y <= 0:
hero_rect.y = 700
#調用blit方法繪製圖像
screen.blit(bg, (0,0))#在每次繪製飛機之前,再將背景繪製一下
screen.blit(hero, hero_rect)
#調用update方法更新顯示
pygame.display.update()
pygame.quit()
可以看到,我們將鼠標在遊戲界面上移動或者點擊之類的動作,都會給記錄下來:
監聽退出事件並且退出程序
那我們現在做一個用戶點擊程序的X按鈕,使程序能夠退出
import pygame
pygame.init()
#創建遊戲窗口 大小爲480 * 700
#繪製背景圖像
screen = pygame.display.set_mode((480,700))
#加載圖像數據
bg = pygame.image.load(r'.\images\background.png')
#通過blit來繪製圖像,從遊戲窗口screen的(0,0)處開始繪製
screen.blit(bg, (0,0))
#繪製自己的小飛機
hero = pygame.image.load(r'.\images\me1.png')
screen.blit(hero, (150,300))
#在繪製完所有圖像後,再統一調用update方法
pygame.display.update()
#創建時鐘對象
clock = pygame.time.Clock()
#定義rect記錄飛機的初始位置,102,126分別爲飛機圖片的寬高
hero_rect = pygame.Rect(150, 300, 102, 126)
while True:
clock.tick(60)
#監聽事件
for event in pygame.event.get():
#判斷事件類型是否是退出事件
if event.type == pygame.QUIT:
print("遊戲退出...")
#quit卸載所有的模塊
pygame.quit()
#exit()退出程序
exit()
#修改飛機的位置
hero_rect.y -= 1
#判斷飛機位置
if hero_rect.y <= 0:
hero_rect.y = 700
#調用blit方法繪製圖像
screen.blit(bg, (0,0))#在每次繪製飛機之前,再將背景繪製一下
screen.blit(hero, hero_rect)
#調用update方法更新顯示
pygame.display.update()
pygame.quit()
再點擊X按鈕,程序成功退出