pygame入門小遊戲(外星人入侵(7) )

2021-08-11 03:20:22 字數 2827 閱讀 5662

我們來移動外星飛船,思想是飛船左右移動,碰到螢幕邊緣後,然後會向下移動

在alien.py中新增方法update()

def

update

(self):

#向右移動外星飛船

self.x += 1

self.rect.x = self.x

然後在主迴圈中更新外星人的位置

ck.update_aliens(aliens)

在g_fun.py末端新增update_aliens()

def

update_aliens

(aliens):

aliens.update()

執行程式,發現飛船向右移動,直至消失

下面我們讓飛船碰到螢幕邊緣後向下移動一段距離

alien.py

def

check_edge

(self):

screen_rect = self.screen.get_rect()

if self.rect.right >= screen_rect.right:

return

true

elif self.rect.left <= 0:

return

true

defupdate

(self):

#向右移動外星飛船

self.x += (1 * self.my_setting.fleet_dir)

self.rect.x = self.x

別忘記在setting.py中新增self.fleet_dir = 1

g_fun.py

def

check_fleet_edge

(my_setting, aliens):

for alien in aliens.sprites():

if alien.check_edge():

change_fleet_dir(my_setting, aliens)

break

defchange_fleet_dir

(my_setting, aliens):

for alien in aliens.sprites():

alien.rect.y += 10

my_setting.fleet_dir *= -1

defupdate_aliens

(my_setting, aliens):

check_fleet_edge(my_setting, aliens)

aliens.update()

執行程式,看到外星飛船左右移動,碰到邊緣後會向下移動

接下來,檢測外星飛船與子彈的碰撞

修改update_bullets()函式如下

def

update_bullets

(aliens, bullets):

bullets.update()

#刪除消失的子彈

for bullet in bullets.copy():

if bullet.rect.bottom <= 0:

bullets.remove(bullet)

collisions = pygame.sprite.groupcollide(bullets, aliens, true, true)

sprite.groupcollide()來檢測兩個編組成員的碰撞,若兩個成員碰撞,就刪除他們,(若把第乙個true改為false,子彈不會被刪除,會繼續擊落下乙個飛船)

對了,此時,主程式中的update_bulleta()還需要傳遞實參aliens

ck.update_bullets(aliens, bullets)
執行程式,結果如下

那麼,當我們把外星飛船擊毀後,我們需要生成新的外星飛船,

g_fun.py

def update_bullets(my_setting, screen, ship, aliens, bullets):

......

......

......

......

......

......

... collisions = pygame.sprite.groupcollide(bullets, aliens, true, true)

if len(aliens) ==

0: bullets.empty()

alien_fleet(my_setting, screen, aliens, ship)

main.py中

ck.update_bullets(my_setting, screen, ship, aliens, bullets)
執行程式,會發現當外星飛船被擊落後,會出現新的一批

為了使程式執行流暢,我們重構下update_bullets(),把處理外星人碰撞和處理子彈的程式再建立乙個新的函式,

pygame應用 射擊外星人遊戲

一 遊戲功能介紹 1 點選play按鈕,遊戲開始。空格鍵傳送子彈,左右鍵可移動飛船。2 擊中外星人之後,進行得分統計。中間的得分統計顯示的是總的得分統計,不會因遊戲的結束而歸零。右上角的得分統計是一次遊戲的得分統計,點選play按鈕後則重新歸零。3 當外星人碰到飛船或螢幕底端時,遊戲重新開始,三次後...

Pygame 外星人入侵(7)外星人壓境

二 更加合理地移動 三 小結 在之前的博文中,實現了在螢幕上繪製一大群外星人,現在我們想讓這群外星人動起來,它們的移動遵循著一定的規律。我們首先要實現的是,如何讓一群外星人一起向螢幕右側移動。遊戲引數性質的變數統一存放在 設定模組中的設定類中 6 外星人的屬性 6。1 外星人移動的速度 self.a...

Pygame 外星人入侵(2)

二 顯示飛船到螢幕上 三 小結 我們現在有了一塊 pygame 遊戲螢幕,現在要往螢幕上加元素,比如我們將要操控的飛船。首先我們要在螢幕上顯示飛船,顯示的飛船影象是由一張來提供的。因此,我們需要先找到一張合適的來代表飛船。在 python程式設計 從入門到精通 這本書中對於適合作為素材的做了大致的描...