你好,我是悅創。前面我們開始的為期 30天的更新挑戰第一篇,接下來我們是第二篇。第一篇的課程視訊,也已經在微信公衆号裡面了。有興趣的可以關注公衆号:AI悅創。
目錄
- 載入圖檔、調整大小
- 圖檔顯示規則
- 足球反彈
1. 載入圖檔、調整大小
案例 1:建立檔案,準備好兩個圖檔檔案(可自行下載下傳喜歡的圖檔,這兩個圖檔完整檔案名已經改為和
football.png
),三個檔案放同一檔案夾内。然後編碼進行圖檔載入和調整大小。
background.jpg

為了,友善後續的閱讀,退出處理部分已經寫成函數
quit()
寫成函數部分,我在零基礎一對一部分已經講解過了,如果有需要學 Python 零基礎一對一的人歡迎聯系報名,長期招收。
import pygame # 導入 pygame 庫
import sys # 導入系統庫,無需安裝
pygame.init() # 調用初始化函數
size = width, height = 600, 400
screen = pygame.display.set_mode(size)
pygame.display.set_caption('我的遊戲')
def quit(): # 把退出處理寫成函數,友善之後閱讀。
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 使用變量儲存載入的圖檔,圖檔函數一般在 image 中
football = pygame.image.load('football.png') # 載入的圖檔會被認為是一層一層的面,稱為 surface
football = pygame.transform.smoothscale(football, (60, 60))
# ↑ 通過 transform 改變 surface 的大小,存回變量中
while True:
quit() # 調用退出處理函數,判斷要不要退出
# ↓ 使用 blit() 顯示圖檔,第二個參數是圖檔坐标
screen.blit(football, (100, 100))
pygame.display.update() # update 意為更新
代碼解析:
- pygame 中的圖像相關函數在 image 裡,載入使用
。load()
- 載入時填寫圖檔完整名稱,載入時的圖檔資料被視為一個表面(surface),這個面可以改變坐标和大小。
- 顯示圖檔時,使用建立的螢幕來顯示(PS:我們的東西肯定是放在螢幕上面來顯示的)是以這裡用了 screen,顯示函數是
,它有兩個參數,分别是要顯示的面和這坐标。blit()
2. 圖檔顯示規則
- 在 pygame 中采用螢幕左上角為坐标原點,向下為 y 正方向,向右為 x 正方向。
- 顯示圖檔的時候指定圖檔坐标,也是圖檔的左上角,surface 預設
(0, 0)
- 先顯示的圖檔會被後面顯示的圖檔覆寫住,是以背景圖檔要先顯示。
bg = pygame.image.load('background.jpg')
bg = pygame.transform.smoothscale(bg, (600, 400))
screen.blit(bg, (0, 0)) # 從左上角開始顯示背景圖檔
為了,防止小白不了解,不知到代碼放在哪裡,下面放上代碼圖檔:
注意:
載入背景圖檔後,設定為視窗一樣的大小,然後将坐标設為
(0, 0)
,此時正好鋪滿背景。
3. 足球反彈
案例 2: 讓足球在球場中運動,碰到邊界就反彈,在原理的代碼上做如下的修改。
我來提示一下:
我們知道圖檔顯示的位置依靠坐标來定決定,那麼坐标變化就意味着圖檔的運動。
圖檔坐标要變化,寫定的數值顯然是不可以的,是以用變量來表示坐标和對應的速度。
碰到邊界實際上就是坐标超出了螢幕的大小了,需要注意圖檔上下左右的坐标,要考慮圖檔的尺寸。
這裡我就直接放在完整代碼:
import pygame, sys
pygame.init()
# 建立遊戲視窗大小
size = width, height = 600,400
screen = pygame.display.set_mode(size)
# 設定視窗标題
pygame.display.set_caption("我的世界")
# 加載足球圖像
football = pygame.image.load(r'football.png')
# 調整圖像的大小
football = pygame.transform.smoothscale(football, (width//6, height//4))
# 加載背景圖檔
background = pygame.image.load(r'background.jpg').convert_alpha()
# 調整圖像的大小
background = pygame.transform.smoothscale(background, (width, height))
# 設定遊戲的圖示
pygame.display.set_icon(football)
# 擷取圖像的外切矩形
ball_rect = football.get_rect()
# 定義速度
speed = [1,1]
# 建立顔色
bgcolor = pygame.Color('black')
# 建立控制頻率的clock
fclock = pygame.time.Clock()
# 定義重新整理頻率
fps = 300
while True:
# 處理退出事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# 設定背景的顔色
screen.fill(bgcolor)
# 繪制背景圖檔
screen.blit(background, (0, 0))
# 設定足球的運動
ball_rect = ball_rect.move(speed[0], speed[1])
# 足球的上邊Y軸坐标<0或者足球的下邊的Y軸坐标>建立視窗的高度
if ball_rect.top < 0 or ball_rect.bottom >height:
speed[1] = -speed[1]
# 足球的左邊的X坐标<X軸的0坐标或者右邊的坐标>建立視窗寬度
if ball_rect.left < 0 or ball_rect.right > width:
speed[0] = -speed[0]
# 在螢幕中的矩形中繪制圖形
screen.blit(football, ball_rect)
# 重新整理遊戲場景
pygame.display.update()
# 控制遊戲場景重新整理率
fclock.tick(fps)