python 外星人大戰 之太空飛船的顯示

2021-08-22 14:50:35 字數 3355 閱讀 9908

從這篇開始我們就要一步步寫我們的外星人大戰的介面和邏輯了。首先,我們讓我們的作戰飛船在我們的場景中顯示出來並且可以按照我們指定的方式移動。

在建立我們的飛船之前,我們來考慮一下我們的飛船要有些什麼屬性和方法,首先,我們應該給我們的飛船弄乙個漂亮點的顯示吧,其次我們的讓我們的飛船在螢幕上顯示出來,最後應該是飛船的移動方法了。

那麼我們就建立乙個airship類來實現我們暫時能想到的東西。

import pygame

class

airship:

def__init__

(self, screen):

""" :param screen: 飛船將要繪製到的螢幕

"""# 指定飛船要繪製到的螢幕

self.screen = screen

# 設定飛船路徑

self.air_ship_path = 'images/spacecraf.png'

# 建立飛船su***ce

self.air_ship = pygame.image.load(self.air_ship_path)

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

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

# 獲取飛船su***ce外接矩形

self.air_ship_rect = self.air_ship.get_rect()

self.init_airship_start_pos()

definit_airship_start_pos

(self):

""" 初始化飛船位置

"""# 獲取螢幕矩形

screen_rect = self.screen.get_rect()

# 設定飛船在螢幕中居中顯示

self.air_ship_rect.centerx = screen_rect.centerx

# 設定飛船在螢幕底部顯示

self.air_ship_rect.bottom = screen_rect.bottom

defblitme

(self):

""" 在指定的螢幕上繪製飛船

"""self.screen.blit(self.air_ship, self.air_ship_rect)

這裡的**我就簡單說一下blit函式:

blit

()描述:draw

oneimage

onto

another

語法:blit

(source, dest, area=none, special_flags = 0) ->

rect

這裡簡單的給大家說明一下,其中source就是我們要繪製的su***ce,dest可以是我們制定的座標對,也可以繪製su***ce的矩形區域。

繪製su***ce我們就主要使用這個函式了,其他的我們暫時不做深究。

上面是我們最簡單的飛船類**,接下來我們需要在我們的遊戲主迴圈中建立我們的飛船。

# 建立飛船su***ce

self.air_ship = airship(self.screen)

然後在主迴圈中顯示飛船:

# 繪製飛船

self.air_ship.blitme()

執行程式:

在這之前把我目前的程式組織結構給大家看下,避免有人看我的**不清楚在**修改。

""" 初始化遊戲引數和元素

"""# 初始化全域性設定類

self.settings = settings()

# 宣告遊戲螢幕

self.screen = none

# 宣告飛船su***ce

self.air_ship = none

defrun_game

(self):

""" 開始遊戲監聽

"""# 初始化pygame模組

pygame.init()

# 建立遊戲螢幕

self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))

# 設定遊戲標題

pygame.display.set_caption(self.settings.screen_title)

# 設定遊戲顯示圖示

pygame.display.set_icon(pygame.image.load(self.settings.screen_icon))

# 建立飛船su***ce

self.air_ship = airship(self.screen)

while

true:

for event in pygame.event.get():

if event.type == pygame.quit:

pygame.quit()

sys.exit()

elif event.type == pygame.keydown:

pass

elif event.type == pygame.keyup:

pass

# 重繪背景

# screen.blit(pygame.image.load( self.settings.screen_backgroud),(0,0))

self.screen.fill(self.settings.screen_bg_color)

# 繪製飛船

self.air_ship.blitme()

# 重新整理顯示

pygame.display.flip()

後面的我們就不再貼詳細的**了,新增的和修改的大家可以對應著自己檢視。

外星人大戰

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

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

前面我們看過了怎麼實現子彈類,今天我們就來看下怎麼將外星人顯示在螢幕。import pygame from pygame.sprite import sprite import random class alien sprite def init self,screen,settings super...

python 外星人入侵

外星人入侵專案 最近初步瀏覽了 python 從入門到實踐 這本書,決定嘗試一下 準備階段中 初始化 pygame.init 關閉視窗 pygame.display.quit 設定視窗大小 screen pygame.display.set mode 1200 800 乙個二元組,1200和800分...