中导入pygame_Pygame(二)--线条的艺术
Hello,小懵懂們,阿呆又來啦~
咱們以后的排版會有些變化:
1、完整代碼附在每個范例后
2、接著會有遷移小練習,這一部分我會說明針對范例代碼需要做改動的部分,至于真正的實現(xiàn)就需要大家自己動手啦~
說起線條,大家會聯(lián)想到神馬呢?是這樣嘛?
咳咳,不小心暴露了自己善于發(fā)現(xiàn)美的眼睛~咱們這一期啊,雖然畫不了帥哥哥,但咱可以為這個打打基礎嘛。好啦,各位看官,線條的世界已開啟,快進來吧~
Part 1 鑰匙啊~
上一期咱們學會了如何將建立保存新文件、pygame導入、初始化與構建事件循環(huán)等,還記得怎么做嗎?不記得也沒關系,請出門移步
阿呆:Pygame(一)--繪聲繪色的小世界?zhuanlan.zhihu.comPart 2 門后的驚喜
一、條條框框(rect)
1.1 基本矩形
使用 Pygame 的 draw 函數(shù)畫形狀時,必須指定形狀的尺寸。對于矩形來說,需要指定長和寬。矩形區(qū)域用rect(“rectangle”的簡寫)來定義矩形區(qū)域。 rect 要使用左上角坐標、 寬和高來定義:
對了,大家把白家兄弟請出來了嗎?(窗口大小:600*400)繪制矩形的語句格式如下:
rect(screen, 顏色,范圍(left,top,width,height),線寬(0表示填充))
范圍示意圖接下來,我們將此方法用在screen上來畫一個法國國旗吧~
有些小伙伴可能覺得填充顏色時,[R,G,B]記法太麻煩,咱們現(xiàn)在使用一種更簡單的方法:
import pygame from pygame.color import THECOLORS初始化后,生成一個窗口,填充的白色screen:
screen.fill(THECOLORS['white'])根據(jù)我們剛才提到的矩形格式,添加藍色與紅色區(qū)域:
pygame.draw.rect(screen, THECOLORS['blue'],[0,0,200,400],0) pygame.draw.rect(screen, THECOLORS['red'],[400,0,200,400],0)運行程序,得到:
如果想將圖片保存下來,可以在循環(huán)if語句下中加入:
pygame.image.save(screen,'FranceFlag.jpg')就保存到默認文件夾里啦~
這里是完整代碼:
# 文件名: drawFranceFlag.py# 導入Pygame import pygame from pygame.color import THECOLORS# 初始化 pygame.init()# 生成一個窗口 screen = pygame.display.set_mode([600,400])# 將白色鋪滿整個窗口 screen.fill(THECOLORS['white'])# 添加藍色與紅色區(qū)域 pygame.draw.rect(screen, THECOLORS['blue'],[0,0,200,400],0) pygame.draw.rect(screen, THECOLORS['red'],[400,0,200,400],0)# 翻轉 pygame.display.flip()#主循環(huán)&保存 mRunning = True while mRunning:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.image.save(screen,'FranceFlag.jpg')mRunning = False pygame.quit()對了,法國電影“紅白藍三部曲”非常有名哦,大家感興趣的話可以找來看看~
自由、平等、博愛自由、平等、博愛是許多國家所提倡的,世界上三色旗國家非常多。我們的小練習就涉及了另一個三色旗國家。
【小練習:冰島】
大家在網(wǎng)上搜索圖片,就會發(fā)現(xiàn),冰島的國旗有一個藍色的背景、白色的橫縱條紋上又覆蓋了紅色的,所以我們只需要改動窗口顏色,再畫出嵌套的橫縱條紋就好啦~
# 將藍色鋪滿整個窗口 screen.fill(THECOLORS['blue'])# 添加白色與紅色區(qū)域 pygame.draw.rect(screen, THECOLORS['white'],[0,150,600,100],0) pygame.draw.rect(screen, THECOLORS['white'],[150,0,100,400],0) pygame.draw.rect(screen, THECOLORS['red'],[0,170,600,60],0) pygame.draw.rect(screen, THECOLORS['red'],[170,0,60,400],0)運行程序:
1.2 線寬的變化(賞析)
剛才我們提到的矩形的語句格式里,最后一個參數(shù)表示線寬,讓我們來看看線寬變化的藝術吧
有木有盜夢空間的趕腳?碧海藍天下,沉浸在一層層的夢境中...想探索你自己的潛意識空間嗎?代碼在文末哦~
二、愛的魔力轉圈圈
2.1 圓形(circle)
使用 Pygame 的 draw 函數(shù)畫圓形時,需要指定半徑。圓區(qū)域用circle來定義。繪制圓形的語句格式如下:
circle(screen, 顏色,位置(left,top),半徑,線寬(0表示填充))
我們之前已經學會了畫矩形,接下來咱們試著把矩形與圓形結合起來,畫出老撾的國旗吧~
填充好的紅色screen(600*400):
screen.fill(THECOLORS['red'])老撾的國旗上由一個藍色的矩形和一個白色的圓形組成,代碼如下:
pygame.draw.rect(screen, THECOLORS['blue'],[0,100,600,200],0) pygame.draw.circle(screen,THECOLORS['white'],[300,200],90,0)運行程序:
這里是完整代碼:
# 文件名: drawLaosFlag.py# 導入 import pygame from pygame.color import THECOLORS# 初始化 pygame.init()# 生成一個窗口 screen = pygame.display.set_mode([600,400])# 用紅色填充窗口 screen.fill(THECOLORS['red'])# 添加一個藍色的矩形和白色的圓 pygame.draw.rect(screen, THECOLORS['blue'],[0,100,600,200],0) pygame.draw.circle(screen,THECOLORS['white'],[300,200],90,0)# 翻轉 pygame.display.flip()# 循環(huán)與保存 mRunning = True while mRunning:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.image.save(screen,'LaosFlag.jpg')mRunning = False pygame.quit()【小練習:八卦圖】
之所以選八卦圖,原因之一是咱們可以練習圓形外加畫弧線,之二是阿呆我非常崇拜老子,正所謂“道生一、一生二、二生三、三生萬物”,任何復雜的事物都有一個最初的起點,阿呆希望能陪伴大家開啟Pygame之門,靜等大家逐漸成長為編程大神~
在開始畫之前,咱們需要補充一個小知識:
繪制弧形的語句格式如下:
pygame.draw.arc(screen,顏色,范圍(left,top,width,height),起始角度,結束角度,線寬)
在導入部分加入以下代碼:
import math初始化、建立一個窗口(600*600)后,用白色進行填充:
screen.fill(THECOLORS['white'])阿呆技藝不精,畫八卦圖的過程有點兒曲折,各位看官有更好的辦法,歡迎留言哦~大體過程如下:大黑圓-白色長方形-中黑、白圓-小黑、白圓-大半弧
pygame.draw.circle(screen,THECOLORS['black'],[300,300],300,0) pygame.draw.rect(screen, THECOLORS['white'],[0,300,600,300],0) pygame.draw.circle(screen,THECOLORS['black'],[150,300],150,0) pygame.draw.circle(screen,THECOLORS['white'],[450,300],150,0) pygame.draw.circle(screen,THECOLORS['white'],[125,300],50,0) pygame.draw.circle(screen,THECOLORS['black'],[475,300],50,0) pygame.draw.arc(screen,THECOLORS['black'],[0,0,600,600],math.pi,2*math.pi,1)運行程序:
2.2 橢圓(ellipse)
繪制橢圓的語句格式如下:
ellipse(screen, 顏色,范圍(left,top,width,height),線寬(0表示填充))
我們在填充好的藍色screen(600*400)的命令行下輸入以下代碼:
# 填充藍色窗口 screen.fill(THECOLORS['blue'])# 添加白色和黑色橢圓 pygame.draw.ellipse(screen,THECOLORS['black'],[250,40,50,200],0) pygame.draw.ellipse(screen,THECOLORS['white'],[150,100,300,75],0)運行程序:
看,有只企鵝在天上!2.3 曲線(lines)
Pygame中沒有畫曲線的方法, 所以我們必須利用單個的點來畫曲線。一種方法是畫很小的圓或矩形(圓或矩形的大小只有一個或兩個像素),接著把這些小圓或矩形用線段連接起來。 繪制線段的語句格式如下(aa表示抗鋸齒,提高畫面質量):
aalines(screen, 顏色,False(首尾不相連), plotPoints(點的列表), 線寬)
接下來我們詳細講述這個過程:
在最開始的命令行中,導入數(shù)學函數(shù)(包括cos())
import math接著在填充好的藍色screen(600*400)的命令行下嵌入一個for循環(huán),使得x坐標能從左到右循環(huán),并用公式計算每個x對應的y值:
plotPoints = [] for x in range(0,600):y = int(math.cos(x/200.0 * 1 * math.pi) *50)+350將各個點添加到列表中:
plotPoints.append([x, y])用draw.lines函數(shù)畫出整條曲線:
pygame.draw.aalines(screen, THECOLORS['white'],False, plotPoints, 1)【小練習:出海】
我們已經學習了畫圓、橢圓、曲線等,下面我們利用這些工具進行藝術創(chuàng)作吧~
我的作品:
出海完整代碼:
# 文件名: wavellines.py# 引入 import pygame import math from pygame.color import THECOLORS# i初始化 pygame.init()# 生成窗口 screen = pygame.display.set_mode([600,400])# 填滿藍色窗口 screen.fill(THECOLORS['blue'])#加入紅太陽 pygame.draw.circle(screen,THECOLORS['red'],[10,10],50,0)# 黑白相間的企鵝 pygame.draw.ellipse(screen,THECOLORS['black'],[250,40,50,200],0) pygame.draw.ellipse(screen,THECOLORS['white'],[150,100,300,75],0)# 海浪 plotPoints = [] for x in range(0,600):y = int(math.cos(x/200.0 * 1 * math.pi) *50)+350plotPoints.append([x, y]) pygame.draw.aalines(screen, THECOLORS['white'],False, plotPoints, 1)# 翻轉 pygame.display.flip()# 主循環(huán)&保存圖片 mRunning = True while mRunning:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.image.save(screen,'Wavelines.jpg')mRunning = False pygame.quit()最后,承諾大家的線寬藝術的完整代碼:
#文件名: WidthArt.py# 引入 import pygame,random from pygame.color import THECOLORS# 初始化 pygame.init()# 生成窗口 screen = pygame.display.set_mode([600,400])# 充滿藍色的窗口 screen.fill(THECOLORS['blue'])#畫隨機矩形 for i in range (1,50):width = random.randint(0,200)height = random.randint(0,100) top = random.randint(0,350)left = random.randint(0,450)line_width = random.randint(1,3)pygame.draw.rect(screen,THECOLORS['white'],[left,top,width,height],line_width)# 翻轉 pygame.display.flip()# 循環(huán)&保存 mRunning = True while mRunning:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.image.save(screen,'WidthArt.jpg')mRunning = False pygame.quit()今天就到這里啦~各位看官,走前記得點個贊啊,阿呆沒有贊走不動了~下期咱就要上動畫啦~
假裝自己得寵過~
總結
以上是生活随笔為你收集整理的中导入pygame_Pygame(二)--线条的艺术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: markdown 流程图js_MarkD
- 下一篇: 手工收集awr报告_oracle手工生成