Pygame添加直線、圖形

視頻課

【零基礎 Python體驗課】第四季 pygame遊戲開發


文章配套代碼:千峯教育所有代碼

Pygame顯示圖形

pygame專門提供了一個畫圖的模塊,叫做draw,其中又有很多模塊

1、畫直線

  • 模塊爲:pygame.draw.line()
    • line方法參數爲line(畫在哪兒,線的顏色,線的起點,線的終點,線寬)
    • 線寬默認爲1
    • 畫在哪兒一般都是在window上
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、預告

往後好幾節就是最激動人心的 動畫!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章