一、前言
pygame是一個用Python寫的SDL庫。SDL是一個能訪問計算機多媒體硬件組件(包括聲卡,視頻卡监憎,輸入組件等)的跨平臺庫。本系列主要通過pygame做小游戲來學習編程婶溯。對于學過基本語法鲸阔,刷過一些題目的同學偷霉,提高自己的最佳方式就是通過做小游戲等實際的項目,有目標地做項目才能真正將知識內(nèi)化隶债。初學者一定要學會CRM(Copy Run Modify,又稱魔改)大法跑筝,把書上網(wǎng)上的例子代碼跑起來后死讹,一定要嘗試修改下代碼,通過關(guān)鍵參數(shù)或者關(guān)鍵語句的修改曲梗,可以驗證自己對代碼的理解是否正解赞警。
二、安裝
安裝pygame的最佳方式是通過pip命令來安裝虏两,在Windows下打開CMD窗口(win鍵 + R愧旦,輸入 cmd)界面上輸入pip install pygame命令便安裝好。
有一些同學在這步安裝過程中會遇到包無法順利下載的問題定罢,可以用一下命令來執(zhí)行,這個命令是通過pip使用豆瓣源的鏡像來下載安裝pygame笤虫。兩個命令的區(qū)別在于安裝過程所需要的文件是在國外還是國內(nèi)的網(wǎng)站去下載。
pip install pygame -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
三祖凫、Hello world
學習編程任何語言琼蚯,框架都是從Hello world例子開始的,學習pygame也不例外惠况,我們從以下例子開始遭庶。
import pygame, sys
# 初始化
pygame.init()
# 設(shè)置屏幕的寬度,高度
SCREEN = pygame.display.set_mode((400, 300))
# 設(shè)置窗口的標題
pygame.display.set_caption('Hello World!')
# 游戲主循環(huán)
while True: # main game loop
for event in pygame.event.get():
# 處理退出事件
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 將屏幕的背景填充成白色稠屠,了解下RGB三原色
SCREEN.fill((255, 255, 255))
# 調(diào)用 pygame.display.update() 方法更新整個屏幕的顯示
pygame.display.update()
效果如下:
游戲主循環(huán)
游戲主循環(huán)(事件)是一直在運行著的峦睡。無論是在玩游戲,更新游戲狀態(tài)权埠,渲染畫面或者是采集輸入數(shù)據(jù)榨了,它是一直在不間斷運行著的。當我們創(chuàng)建一個循環(huán)時攘蔽,必須能保證阻逮,我們有方法可以跳出循環(huán),結(jié)束程序運行秩彤。游戲中經(jīng)常用各種事件要處理叔扼,比如鍵盤鼠標等操作,pygame把所有類似的事件都放進事件隊列漫雷,再由用戶來處理瓜富。我們可以用pygame.event.get()方法來操作它。目前我們只處理游戲的退出事件降盹,上面代碼里當收到退出事件后与柑,就退出游戲。
四、常用的知識點
1. 理解游戲坐標系
pygame坐標系的理解是十分關(guān)鍵的价捧,所有的圖形圖片的繪制都與之相關(guān)丑念。原點 在 左上角 (0, 0)
x 軸 水平方向向 右,逐漸增加
y 軸 垂直方向向 下结蟋,逐漸增加
2. 矩形結(jié)構(gòu)
矩形是一個簡單的矩形——僅由左上角的位置脯倚、寬度和高度來定義。很多pygame函數(shù)都把rects作為參數(shù)嵌屎,它們也取“rectstyle”推正,這個序列的值與矩形的值相同,所以如果我需要一個矩形來定義10 20 40 50的面積宝惰,我可以做以下任何一項:
rect = pygame.Rect(10, 20, 40, 50)
rect = pygame.Rect((10, 20, 40, 50))
rect = pygame.Rect((10, 20), (40, 50))
rect = (10, 20, 40, 50)
rect = ((10, 20, 40, 50))
如果要將結(jié)果矩形化畫出來植榕,可以使用pygame.draw.rect函數(shù)。第一個參數(shù)填寫屏幕對象尼夺,第二參數(shù)為矩形的顏色尊残,第三個參數(shù)為矩形對象,可以填寫前面矩形結(jié)構(gòu)中的一種淤堵。
import pygame, sys
# 初始化
pygame.init()
# 設(shè)置屏幕的寬度夜郁,高度
SCREEN = pygame.display.set_mode((400, 300))
# 設(shè)置窗口的標題
pygame.display.set_caption('Hello World!')
# 游戲主循環(huán)
while True: # main game loop
for event in pygame.event.get():
# 處理退出事件
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 將屏幕的背景填充成白色,了解下RGB三原色
SCREEN.fill((255, 255, 255))
# 調(diào)用 pygame.display.update() 方法更新整個屏幕的顯示
pygame.draw.rect(SCREEN, (255, 0, 0), (20, 30, 100, 50))
pygame.display.update()
效果如下:
五粘勒、練習題
- 在(80, 60)位置畫出一個綠色竞端,段度為60,高度100的矩形庙睡。
- 在(180, 160)位置畫出一個藍色事富,半徑為50的圓形。
pygame.draw.circle
原型:pygame.draw.circle(Surface, color, pos, radius, width=0): return Rect
用途:用于繪制圓形乘陪。第三個參數(shù)pos是圓心的位置坐標统台,radius指定了圓的半徑。
- 畫一條紫色的直線啡邑, 起點為(0, 80), 終點為(70贱勃, 120)
pygame.draw.line
原型:pygame.draw.line(Surface, color, start_pos, end_pos, width=1): return Rect
用途:繪制直線段,start_pos 和 end_pos 分別表示起始點和終止點谤逼,用坐標表示贵扰。width為線條寬度,默認為1流部。
本文由博客群發(fā)一文多發(fā)等運營工具平臺 OpenWrite 發(fā)布