python互動式專案例項 外星人入侵

qq_39212740發表於2018-11-19

一個遊戲專案:
引入模組sys和pygame,模組sys可以指引使用者退出,而pygame包含遊戲的基本功能。
定義開頭run_game(),程式碼行pygame.init()初始化背景設定,讓Python能夠正常工作。用pygame.display.set_mode()來建立screen的顯示視窗,實參(1200,800)是元組,用來定義視窗的大小。
這個遊戲用while來控制迴圈,其中包含一個事件迴圈和管理螢幕更新的程式碼,for迴圈事件迴圈。
為訪問pygame檢測到的事件,使用方法pygame.event.get()。所有鍵盤和滑鼠事件都促使for迴圈執行,在這個迴圈中,編寫一系列的if語句來檢測並響應特定的事件。例如,玩家單擊遊戲視窗的關閉按鈕時,將檢測到pygame.QUIT事件,呼叫sys.exit()退出遊戲介面。
每一次while迴圈都會執行繪製一個空螢幕,並擦去 舊螢幕,使得只有新螢幕可見。在移動遊戲元素的時候,pygame.display.flip()將不斷更新螢幕,以顯示元素的新位置,並在原來位置隱藏元素,從而製造平滑移動的效果。
執行完這些程式碼之後,你將看到空的pygame視窗。
import sys
import pygame
def run_game():
pygame.init()
screen=pygame.display.set_mode((1200,800))
pygame.display.set_caption(“Alien Invarsion”)
while True:
for event in pygame.event.get():
if event==pygame.QUIT
sys.exit()
pygame.display.flip()
run_game()

建立ship類:
匯入模組pygame,ship接受兩個引數:引用self和screen,screen指定了飛船將繪製到什麼地方。用pygame.image.load()載入飛船的surface,儲存到self.image中。載入影象之後,使用get_rect()獲取響應surface的屬性rect,並儲存到self.rect()中。
處理rect物件時,可用矩形四角中心的x和y 座標,通過指定這些值來指定矩形的位置。
要是矩形元素居中,可設定相應rect的屬性center、centerx、centery。要是遊戲元素和螢幕邊緣對齊,可使用屬性top、bottom、left、right。
在pygame中,定義了方法blitme(),根據self.rect()指定的位置繪製到螢幕上。
import pygame
class Ship():
def init(self,screen):
self.screen=screen
self.image=pygame.image.load(‘image/ship.bmp’)
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

def blitme(self):
    self.screen.blit(self.image,self.rect)

相關文章