視頻課
【零基礎 Python體驗課】第四季 pygame遊戲開發
文章配套代碼:千峯教育所有代碼
Pygame顯示圖形
pygame專門提供了一個畫圖的模塊,叫做draw
,其中又有很多模塊
1、畫直線
- 模塊爲:
pygame.draw.line()
- line方法參數爲
line(畫在哪兒,線的顏色,線的起點,線的終點,線寬)
- 線寬默認爲1
- 畫在哪兒一般都是在window上
- line方法參數爲
import pygame
pygame.init()
window = pygame.display.set_mode((600, 600))
pygame.display.set_caption("顯示圖形")
# 設置背景顏色
window.fill((255, 255, 255))
pygame.display.update() #就連設置顏色都需要更新一次
# ============顯示圖形============
#1畫直線
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2)
window.blit(window, (0, 0))
pygame.display.update()
flag = True
while flag:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
2、畫折線
大家說了,折線好畫,就是多個直線連接在一起就是折線,可以但是麻煩,line方法的升級lines集合這個方案,就是依然是拼接原理。
- 模塊爲:
pygame.draw.lines()
- 參數爲
lines(畫在哪,線的顏色,是否閉合,多個點的列表,線寬)
- 前兩個參數和上面一模一樣
- 是否閉合:假如有四個點,
點1->點2->點3->點4->點1
,就是最後一個點連接第一個點 - 多個點的列表,就是把每一條線的起始位置和結束位置放在一個元組中,將多個元組放在列表中
- 實例:
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
- 將每一條線的數據存儲
- 實例:
- 線寬不用說吧
- 參數爲
實例:
import pygame
pygame.init()
window = pygame.display.set_mode((600, 600))
pygame.display.set_caption("顯示圖形")
# 設置背景顏色
window.fill((255, 255, 255))
pygame.display.update() #就連設置顏色都需要更新一次
# ============顯示圖形============
#1畫直線
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看這就是斜線
window.blit(window, (0, 0))
pygame.display.update()
#2畫折線
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()
# ==============================
flag = True
while flag:
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
3、畫圓
- 函數:
pygame.draw.circle()
- 參數詳解:
circle(畫在哪兒,線的顏色,圓心,半徑,線寬=0)
- 圓心爲一個座標點
- 顏色爲RGB
- 線寬默認爲零,爲填充
- 參數詳解:
4、矩形
- 函數:
pygame.draw.rect()
- 參數詳解:
rect(畫在哪,線的顏色,矩形範圍,線寬=0)
- 顏色爲RGB
- 只需要定下左上角的頂點和長和寬,就是矩形範圍
- 如果不需要線寬的話,也就是線寬爲0,就是填充了
- 參數詳解:
畫圓和矩形的綜合代碼
# ============顯示圖形============
#1畫直線
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看這就是斜線
window.blit(window, (0, 0))
pygame.display.update()
#2畫折線
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()
#3畫圓
#circle()
pygame.draw.circle(window, (0, 0, 255), (200, 250), 100, 2)
#4矩形
pygame.draw.rect(window, (120, 20, 60), (100, 70, 200, 100), 1)
pygame.display.update()
# ==============================
如果長方形的線寬爲0,就是填充
我們改變這些圖形的位置,就改變xy座標就行了
5、橢圓
- 函數:
pygame.draw.ellipse()
- 畫一個長方形的內切圓,正方形是圓
- 參數詳解:
ellipse(畫在哪兒, 線的顏色, 矩形範圍, 線寬=0)
- 實例:
ellipse(window, (255, 0, 0), (30, 70, 100, 200), 3)
6、弧線
其實弧線和橢圓又有關係,其實都是按照矩形的一些參數繪製的
弧線也使用長方形內的內切圓,只是去其中一部分
- 函數:
pygame.draw.arc()
- 參數詳解:
arc(畫在哪兒,線的顏色,矩形範圍,起始弧度,終止弧度,線寬=1)
- 注意這裏是弧度(0~2π),而不是角度!
- 橢圓的這裏是0
- 如果取一半就是0~π,π怎麼表示?就寫成3.1415926就夠了,如果有人想究極精準,那就多寫幾位,直接用PI需要模塊
- 線寬默認1
- 顏色都是RGB
- 參數詳解:
# ============顯示圖形============
#1畫直線
#line()
pygame.draw.line(window, (234, 190, 233), (20, 20), (90, 90), 2) #一看這就是斜線
window.blit(window, (0, 0))
pygame.display.update()
#2畫折線
#lines()
points = [(10, 300), (100, 160), (180, 260), (300, 100)]
pygame.draw.lines(window, (0, 255, 0), True, points, 3)
window.blit(window, (0, 0))
pygame.display.update()
#3畫圓
#circle()
pygame.draw.circle(window, (0, 0, 255), (200, 250), 100, 2)
#4矩形
pygame.draw.rect(window, (120, 20, 60), (100, 70, 200, 100), 0)
pygame.display.update()
#5橢圓
pygame.draw.ellipse(window, (255, 0, 0), (30, 70, 100, 200), 3)
pygame.display.update()
#6弧線
pygame.draw.arc(window, (0, 0, 0), (30, 70, 100, 200), 0, 3.1415926, 7)
pygame.display.update()
# ==============================
對於橢圓取弧度是逆時針的
然後π可以使用math模塊導入
from math import pi
print(pi)
直接pi就出來了,就比剛纔多了一些,也是一個固定的常量
7、預告
往後好幾節就是最激動人心的 動畫!