python專案《外星人入侵》增加上下操作

2021-10-23 03:45:28 字數 3155 閱讀 8250

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...