系列文章目錄
第一章:武裝飛船
09重構check_events()
一、重構
1.重構原因
隨著游戲的開發,方法_check_events()將越來越長,因此將其部分代碼放在兩個方法中,其中一個處理KEYDOWN事件,另一個處理KEYUP事件:
2.重構的方法
我們創建了兩個新的輔助方法:_check_keydown_events()和_check_keyup_events(),它們都包含形參self和event,這兩個方法的代碼是從_check_events()中復制而來的,因此將方法_check_events()中相應的代碼替換成了對這兩個新方法的呼叫,現在,方法_check_events()更簡單,代碼結構也更清晰,在其中回應玩家輸入時將更容易,
二、代碼及演示
1.修改game_functions
修改檔案:game_functions.py
點擊查看代碼
#滲透小紅帽python的學習之路
#外星人入侵小游戲
#game_functions.py
#存盤讓游戲運行的函式
import sys
import pygame
#回應鍵盤函式
def check_keydown_events(event,ship):
if event.key == pygame.K_RIGHT:
# 移動飛船
ship.moving_right = True
# 玩家按下右箭頭鍵時標志設為true
elif event.key == pygame.K_LEFT:
ship.moving_left = True
# 玩家按下左箭頭鍵時標志設為true
#回應松開按鍵的函式
def check_keyup_events(event,ship):
if event.key == pygame.K_RIGHT:
ship.moving_right = False
# 玩家松開右箭頭鍵時標志設為false
elif event.key == pygame.K_LEFT:
ship.moving_left = False
# 玩家松開左箭頭鍵時標志設為false
def check_events(ship): # 在玩家按右箭頭時需要將飛船向右移動,
# 所以給函式加上了形參ship
for event in pygame.event.get(): # 監聽鍵盤和滑鼠事件
if event.type == pygame.QUIT:
sys.exit()
#修改alien_invasion.py,使其匯入game_functions
#并將事件回圈替換為對函式check_events()的呼叫
elif event.type == pygame.KEYDOWN:
check_keydown_events(event,ship)
elif event.type == pygame.KEYUP:
check_keyup_events(event,ship)
def update_screen(ai_settings,screen,ship):
# 將更新螢屏的代碼移到此處
screen.fill(ai_settings.bg_color) # 每次回圈都會重繪螢屏
ship.blitme() # 每次回圈時重新繪制飛船
pygame.display.flip() # 讓最近繪制的螢屏可見
#飛船移動功能撰寫完畢

2.運行效果
飛船可以任意向左向右移動,直到移動到游戲界面邊界時停止,
點擊下方鏈接觀看運行效果視頻
Python小游戲——外星人入侵飛船移動效果
有什么不懂的地方在評論區留言哦!希望我的文章能對你有所幫助,如果喜歡我的文章,請點贊收藏并關注!你的認可是對我創作最大的鼓勵!
2022-08-24 19:38:53 星期三
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/502624.html
標籤:其他
下一篇:基本資料型別之串列
