python專案《外星人入侵》增加上下操作
目的:可以上下移動
確保上下不會過界
ship.py(新增y軸儲存,飛船移動及上下邊界):
import pygame
class
ship()
:def
__init__
(self,ai_settings,screen)
:'''初始化飛船並設定其初始位置'''
self.screen = screen
self.ai_settings = ai_settings
#載入飛船影象並獲取外接矩形
self.image = pygame.image.load(
'image/ship.png'
) self.rect = self.image.get_rect(
) self.screen_rect = screen.get_rect(
)#將每個新飛船影象放在螢幕地步**
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
#在飛船的屬性center中儲存小數值
self.centerx =
float
(self.rect.centerx)
self.centery =
float
(self.rect.centery)
#移動標誌
self.moving_right =
false
self.moving_left =
false
self.moving_up =
false
self.moving_down =
false
defupdate
(self)
:'''根據移動標誌調整飛船的位置'''
if self.moving_right and self.rect.right < self.screen_rect.right:
self.centerx += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left >0:
self.centerx -= self.ai_settings.ship_speed_factor
if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
self.centery += self.ai_settings.ship_speed_factor
if self.moving_up and self.rect.top >0:
self.centery -= self.ai_settings.ship_speed_factor
#根據self.center更新rect物件
self.rect.centerx = self.centerx
self.rect.centery = self.centery
defbitme
(self)
:'''在指定位置繪製飛船'''
self.screen.blit(self.image,self.rect)
game_functions.py(新增上下響應):
import sys
import pygame
defcheck_keydown_events
(event,ship)
:'''響應按鍵'''
if event.key == pygame.k_right:
ship.moving_right =
true
if event.key == pygame.k_left:
ship.moving_left =
true
if event.key == pygame.k_up:
ship.moving_up =
true
if event.key == pygame.k_down:
ship.moving_down =
true
defcheck_keyup_event
(event,ship)
:'''響應鬆開'''
if event.key == pygame.k_right:
ship.moving_right =
false
if event.key == pygame.k_left:
ship.moving_left =
false
if event.key == pygame.k_up:
ship.moving_up =
false
if event.key == pygame.k_down:
ship.moving_down =
false
defcheck_events
(ship)
:'''響應按鍵和滑鼠事件'''
for event in pygame.event.get():
if event.
type
== pygame.quit:
sys.exit(
)elif event.
type
==pygame.keydown:
check_keydown_events(event,ship)
elif event.
type
==pygame.keyup:
check_keyup_event(event,ship)
defupdate_screen
(ai_settings,screen,ship)
:'''更新螢幕上的影象,並切換到新螢幕'''
# 每次迴圈時都重繪製螢幕
screen.fill(ai_settings.bg_color)
ship.bitme(
)# 讓最近繪製的螢幕可見
pygame.display.flip(
)
python 外星人入侵
外星人入侵專案 最近初步瀏覽了 python 從入門到實踐 這本書,決定嘗試一下 準備階段中 初始化 pygame.init 關閉視窗 pygame.display.quit 設定視窗大小 screen pygame.display.set mode 1200 800 乙個二元組,1200和800分...
外星人入侵
今天是乙個週末,宿舍的人全部都出去玩了,而我因為太懶乙個人留在了宿舍,連床都不起,吃飯靠的是點外賣。不過,為了好玩,我跟著書本學習打了乙個2d小遊戲,並加入了一點自己的東西。一 遊戲頁面 剛開始我把所有的遊戲螢幕設定都放在了下面 裡,這使得 看起來非常長,和雜亂,所以為了使遊戲方便擴充套件和整個 邏...
Pygame 外星人入侵(7)外星人壓境
二 更加合理地移動 三 小結 在之前的博文中,實現了在螢幕上繪製一大群外星人,現在我們想讓這群外星人動起來,它們的移動遵循著一定的規律。我們首先要實現的是,如何讓一群外星人一起向螢幕右側移動。遊戲引數性質的變數統一存放在 設定模組中的設定類中 6 外星人的屬性 6。1 外星人移動的速度 self.a...