目錄
前言
一、將設置內容寫在一個類里
?二、設置小蜜蜂的造型
?三、設置貓蜜蜂的參數
?四、繪制貓蜜蜂到窗口
?總結
前言
昨天我們設置好了窗口,下面我們需要向窗口中添加元素了。
一、將設置內容寫在一個類里
?我個人理解書上的意思是要創建一個類,將所有需要設置的屬性都放在這里,這樣后期需要升級改變的時候,在這里修改參數就行了,例如我們昨天設置的窗口背景顏色,可以將這個參數設置放在設置類里,需要的時候再調用,這就是面向對象的編程思維。那么我們現在建立一個settings文件,在里面創建一些參數。代碼如下:
class Settings():def __init__(self):self.screen_width = 800self.screen_height = 600self.bg_color = (220,220,220)
?可以看出,我們創建了窗口的長和寬,然后設置了顏色,顏色我做了修改,感覺昨天的青色不好看。現在我們需要修改alien_invasion文件里的代碼,導入這個類,從而調用這些參數,我們看代碼。
import sys
import pygame
import settingsdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))pygame.display.set_caption("Alien Invasion")while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(new_setting.bg_color)pygame.display.flip()run_game()
?可以看出,我們首先使用import導入我們創建的類,然后實例化setting類,實例為new_setting,最后通過new_setting調用提前設置好的參數。單看這一段代碼來說比之前好像要復雜一點,也要難理解一點,但是當你的程序達到一定的復雜度以后,這樣分類編寫會更容易維護。下面我們來看一下效果。
?
?運行成功,顏色也變成了灰色(我看是灰色)
?二、設置小蜜蜂的造型
?書上說,pygame默認使用bmp位圖,使用其他的文件類型,要安裝庫,這么麻煩嗎?在網上找一下說明看看。
pygame.image.load可以加載多種類型的圖片文件,包括但不限于:
- BMP
- GIF
- JPG/JPEG
- PNG
- TGA
- TIFF
- WebP
需要注意的是,如果加載的圖片文件不是pygame支持的格式,將會拋出異常。
?按照網上說的,pygame支持的格式有很多啊,我們就偏偏用JPG格式試試(我個人就喜歡jpg格式)
?現在我們需要注意兩點:一是背景為透明的jpg圖片,二是免費的。找了半天沒找到,為了不浪費時間,找了一只貓,湊合用吧,大家欣賞下。
?
?三、設置貓蜜蜂的參數
?按照之前的編程思維,我們要創建單獨的類來定義這只貓蜜蜂的各種屬性,包括大小、位置、動作等。跟書上一樣,我們創建ship文件,不知道為什么命名為ship,ship不是船的意思嗎?
?首先我們先展示類里面的代碼:
import pygameclass Ship():def __init__(self,screen):self.screen = screenself.image = pygame.image.load('cat.webp')self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()self.rect.centerx = self.screen_rect.centerxself.rect.bottom=self.screen_rect.bottomdef blitme(self):self.screen.blit(self.image,self.rect)
?這一段代碼不是很好理解,書上講的也不是很清楚,我先說說我的初步理解,后面如果發現錯了,再進行解釋。
首先初始化方法里傳入的screen就是我們的窗口,然后我們導入我們下載好的圖片“cat.webp”(我們看看這個格式能不能直接用)。
self.rect = self.image.get_rect()這段代碼就是獲取圖片的邊框,同理,下面的代碼就是獲取窗口的邊框,然后通過centerx和bottom屬性將圖片實現在屏幕最下邊居中對齊。
最后我們定義了blitme方法,它里面調用了pygame的blit函數,blit函數的作用就是將圖片繪制到屏幕上,self.rect已經設置好了位置。
?四、繪制貓蜜蜂到窗口
?下面我們只需要在主程序調用Ship類的blitme方法就可以繪制貓蜜蜂到指定位置。
import sys
import pygame
import settings
from ship import Shipdef run_game():pygame.init()new_setting=settings.Settings()screen = pygame.display.set_mode((new_setting.screen_width,new_setting.screen_height))ship = Ship(screen)pygame.display.set_caption("Alien Invasion")while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()screen.fill(new_setting.bg_color)ship.blitme()pygame.display.flip()run_game()
?這段代碼就沒有設么好解釋的了,只是調用函數。我們直接看效果。
?
?成功了,證明圖片的格式不是bmp也是可以的,但是我們的貓蜜蜂有點太大了,我們需要把它改小一點,最好在窗口里像一只小蒼蠅,這里就不贅述怎么改了,我們直接看效果。
?
?嗯,這樣效果好多了。
?總結
?今天主要學習如何設置繪制圖像的位置,以及如何繪制。
?