python 外星人大戰 之外星人顯示

2021-08-22 19:36:16 字數 2386 閱讀 2153

前面我們看過了怎麼實現子彈類,今天我們就來看下怎麼將外星人顯示在螢幕。

import pygame

from pygame.sprite import sprite

import random

class

alien

(sprite):

def__init__

(self, screen, settings):

super().__init__()

# 將要繪製的螢幕

self.screen = screen

# 設定飛船路徑

self.alien_image_path = 'images/alien.png'

# 建立外星人

self.alien = pygame.image.load(self.alien_image_path)

# 重新設定外星人su***ce大小,如果製作的沒有問題,這一步可以省略,我是不擅長作圖,只能自己處理一下了

self.alien = pygame.transform.scale(self.alien, (48, 36))

# 獲取外星人su***ce外接矩形

self.rect = self.alien.get_rect()

# 外星人初始位置,間隔座標原點乙個外星人的寬度

row = random.randint(1, int(settings.screen_width / self.rect.width)-1)

self.rect.x = self.rect.width * row

# 外星人初始位置,間隔座標原點乙個外星人的高度

self.rect.y = self.rect.height

# 儲存精確位置

self.alien_y = float(self.rect.y)

# 外星人移動速度

self.speed_factor = 0.1

defupdate

(self):

self.alien_y += self.speed_factor

self.rect.y = self.alien_y

defblitme

(self):

""" 繪製外星人

"""self.screen.blit(self.alien, self.rect)

這裡繪製函式和前面飛船,子彈類的實現沒什麼區別。解釋一下:

# 外星人初始位置,間隔座標原點乙個外星人的寬度

row = random.randint(1, int(settings.screen_width / self.rect

.width)-1)

self.rect

.x = self.rect

.width * row

這裡我們根據螢幕寬度和外星人的寬度,計算出螢幕最多可容納多少個外星人,然後在使用隨機數確定這個外星人的x座標位置。當然了,使用隨機數會出現在幾個外星人重疊的現象。

同樣我們在更新螢幕的函式裡新增外星人的繪製操作:

# 繪製外星人

for alien in self.aliens

.sprites():

alien.blitme()

最後,我們在修改一下更新操作:

def

update_aliens

(self):

""" 更新外星人

"""self.aliens.update()

# 檢測是否飛出底部

for alien in self.aliens.copy():

if alien.rect.bottom > self.screen.get_rect().bottom:

self.aliens.remove(alien)

# 限制同時出現的外星人數目

if len(self.aliens) < 8:

self.aliens.add(alien(self.screen, self.settings))

# spritecollideany返回發生碰撞的精靈

collision = pygame.sprite.spritecollideany(self.air_ship, self.aliens)

# 如果外星人和飛船發生碰撞,刪除外星人

if collision:

print(collision)

self.aliens.remove(collision)

執行效果:

外星人大戰

coding utf 8 created on tue sep 11 15 06 19 2018 author rain import pygame from pygame.sprite import group from alien import alien from game stats imp...

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

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

外星人入侵 外星人群整體移動

import pygame,sys from pygame.sprite import group from settings import settings class alien pygame.sprite.sprite def init self,screen,ai settings supe...