我們來移動外星飛船,思想是飛船左右移動,碰到螢幕邊緣後,然後會向下移動
在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程式設計 從入門到精通 這本書中對於適合作為素材的做了大致的描...