NO IMAGE

Pygame

tags:python3學習、邏輯訓練、陶冶情操

結合了嵩天教授的課程、《python和pygame遊戲開發指南》、個人整理
程式碼資源下載:https://github.com/ACyong/pygame

pygame 最小遊戲框架

import sys  # 1、引入pygame 和sys 模組
import pygame
pygame.init()  # 2、初始化init() 及設定
screen = pygame.display.set_mode((480, 700))  # 3、設定遊戲視窗大小及標題
pygame.display.set_caption("Hello World!")
# 4、遊戲迴圈,進入遊戲迴圈就以為著遊戲的開始
while True:
# 5、獲取事件並逐類響應
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()  # 解除安裝pygame 所有模組
sys.exit()
pygame.display.update()  # 6、update 更新螢幕顯示

pygame.display 模組專門用於建立、管理遊戲視窗
pygame.display.set_mode(resolution(0, 0), flags=0, depth=0) 建立遊戲視窗

resolution 指定螢幕的寬和高,預設建立的視窗大小和螢幕大小一致
flgs 引數指定螢幕的附加選項,例如是否全屏等等,預設不需要傳遞
depth 參數列示顏色的位數,預設自動匹配
注:必須使用變數記錄set_mode方法的返回視窗物件,因為:後續所有的影象繪製都基於這個返回結果

wall ball version 1

功能:小球在遊戲視窗中自由移動,撞到視窗邊緣,反彈回來
小球下載地址:https://github.com/ACyong/pygame/blob/master/wall_ball/PYG02-ball.gif

import sys
import pygame
pygame.init()
size = width, height = 600, 400  # 設定遊戲視窗大小,從右向左分別是序列賦值和元組賦值
speed = [1, 1]  # 設定初始速度
BLACK = 0, 0, 0  # 設定背景顏色為黑色
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Wall Ball")
ball = pygame.image.load("PYG02-ball.gif")  # 載入小球圖片
ballrect = ball.get_rect()  # 獲得小球物件的矩形物件
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
ballrect = ballrect.move(speed[0], speed[1])  # 讓小球開始移動
# 邊緣檢測
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or ballrect.bottom > height:
speed[1] = -speed[1]
screen.fill(BLACK)  # 背景填充
screen.blit(ball, ballrect)  # 繪製小球影象到矩形物件上
pygame.display.update()

  使用pygame.image.load(“影象路徑”) 方法載入圖片,返回pygame 使用內部定義的Surface 物件表示載入的影象,物件中 .get_rect() 方法返回一個覆蓋影象的矩形Rect 物件,在遊戲中所有可見的元素都是以矩形區域來展現位置的,Rect 物件有一些重要的屬性,如:top、botton、left、right、width=right-left、height=bottom-top。也可以不用Surface 物件來得到舉行區域,用pygame.Reck 這個類來描述矩形區域,需要四個引數來確定(x, y, width, height),如:rect = pygame.Rect(100, 200, 150, 180),宣告的矩形物件左上角x軸:100、左上角y軸:200、寬:150、高:180。

  使用Rect.move(x, y)方法, 使矩形移動一個偏移量(x, y),即在橫軸方向移動x 畫素,縱軸方向移動y 畫素,xy 為整數。

  使用screen.fill(color)方法,顯示視窗背景填充color 顏色,採用RGB色彩體系,本例由於小球不斷運動,運動後原有位置將預設填充白色,因此需要不斷重新整理背景色。

  使用screen.blit(src, dest)方法,將一個影象繪製在另一個影象上,即將src 繪製到dest位置上,本例是將小球繪製到Rect 物件上。