1. 程式人生 > >Python學習筆記 Day 14 專案 -外星人入侵 - 2

Python學習筆記 Day 14 專案 -外星人入侵 - 2

Day 14 專案 -外星人入侵 - 2

  • 首先是歸納Day13學習到的有關pygame的知識,用流程圖方式,繪圖軟體:https://www.draw.io/
    pygame繪製視窗基礎流程**加粗樣式**

定義飛船類流程


  • 初始化視窗,包括獲取控制代碼,獲取視窗矩形
	screen = pygame.display.set_mode(width, height)
	pygame.display.set_caption("Alien Invasion")

	self.image = pygame.image.load('images/ship.bmp')
	self.rect = self.image.
get_rect() self.screen_rect = screen.get_rect()

  • pygame的Sprit類

    	from pygame.sprite import Sprite	
    	from pygame.sprite import Group
    
    • pygame.Sprit類,即‘精靈’,可將遊戲中的相關元素編組,進而同時操作編組中的所有元素,類似於建立一個列表。
    • 精靈,可以理解為會動的圖片;
    • 精靈的Group()函式,當有若干精靈時,可通過Group()函式建立一個列表。每次對組內的精靈進行繪製時,直接呼叫Group.update()即可,而不必考慮組內每個精靈的狀態。
    • 舉例來說,定義一個外星人,是繼承Sprite的類,建立了若干外星人後,在螢幕上一起顯示,每個外星人的在螢幕上的位置都是隨機的,並且要檢測邊界、檢測衝突等等,如果不用Group,需要對每個外星人都做單獨的計算更新等等:
        for alien in aliens:
            alien.update()
            screen.blit(alien.image, alien.rect)
    

    如果使用Group,在建立外星人的時候將這些外星人加入群組即可,以後每次只需要更新一次群組即可實現對所有外星人的更新,並且提供內建的衝突檢測等功能。

    	for alien_number in
    range(number_aliens_x): #建立一個外星人並將其加入當前行 alien = Alien(ai_settings, screen) aliens.add(alien) #直接呼叫群組的update aliens.update()
  • 響應使用者輸入(左右箭頭移動飛船)