我們可以嘗試用python的自帶turtle庫繪制一條蟒蛇
首先我們設計一下蟒蛇的基本形狀
我們先把這段蟒蛇繪制的實例代碼貼出來,各位可以在自己的本地運行一下看看效果,然后我們再繼續分析代碼:
1 #PythonDraw.py 2 import turtle 3 turtle.setup(650, 350, 200, 200) 4 turtle.penup() 5 turtle.fd(-250) 6 turtle.pendown() 7 turtle.pensize(25) 8 turtle.pencolor("purple") 9 turtle.seth(-40) 10 for i in range(4): 11 turtle.circle(40, 80) 12 turtle.circle(-40, 80) 13 turtle.circle(40, 80/2) 14 turtle.fd(40) 15 turtle.circle(16, 180) 16 turtle.fd(40 * 2/3) 17 turtle.done()
程序關鍵:import保留字,引入了一個繪圖體系,名字叫:turtle,就是海龜
學會海龜繪圖體系之后,我們可以完成更加復雜的繪制:五角星繪制、國旗繪制、機器貓繪制
掌握了繪制一條線的方法,就可以繪制整個世界
turtle庫概述:
turtle庫的turtle繪圖體系的python實現
turtle繪圖體系:1969年誕生,主要用於程序設計入門
python的標准庫之一,入門級的圖形繪制函數庫
python的計算生態:python標准庫+第三方庫
標准庫:隨解釋器直接安裝到操作系統的功能模塊
第三方庫:需要經過安裝才能使用的功能模塊
turtle的原理:
turtle是一種真實的存在,有一只海龜,在窗體的正中心,在畫布上游走
走過的軌跡形成了繪制的圖形
海龜由程序控制,可以變換顏色、改變寬度等
turtle的繪圖窗體:
turtle的一個畫布空間,最小單位是像素
turtle的繪圖窗體:
turtle的繪圖窗體:
1 turtle.setup(width, height, startx, starty)
注意三點:
1、setup設置船體的大小及位置
2、4個參數后兩個參數可選
3、setup不是必須的
turtle空間坐標體系
絕對坐標:
1 turtle.goto(x,y)
這句是常用語法,讓海龜爬
我們試試如下的代碼,然后看看運行結果
1 import turtle 2 turtle.goto( 100, 100) 3 turtle.goto( 100,-100) 4 turtle.goto(-100,-100) 5 turtle.goto(-100, 100) 6 turtle.goto(0,0)
我們運行之后看看效果,如下圖所示:
海龜的空間坐標體系
turtle.circle(r,angle),海龜左側圓心,半徑為r畫圓
1 import turtle 2 turtle.circle(100,90) 3 turtle.done()
動手試試上述代碼,會加深對circle函數的理解
下面我們了解一下海龜庫的角度坐標體系
turtle.seth(angle)
1、seth() 改變烏龜行進方向
2、angle為絕對角度
3、seth只改變方向但不行進
海龜也有相對角度
1 turtle.left(angle) 2 turtle.right(angle)
我們來試試如下代碼的繪制效果,來體會Turtle的角度體系
1 import turtle 2 turtle.left(45) 3 turtle.fd(150) 4 turtle.right(135) 5 turtle.fd(300) 6 turtle.left(135) 7 turtle.fd(150) 8 turtle.done()
繪制結果如下圖所示:
下面我們涉及一下RGB色彩體系
萬物色都可以由三種顏色構成
RGB指的是紅綠藍三個通道的顏色組合
覆蓋視力所能感知的所有顏色
RGB每色取值范圍是0-255或0-1小數
常用的RGB色彩:
英文名稱 | RGB整數值 | RGB小數值 | 中文名稱 |
white | 255,255,255 | 1,1,1 | 白色 |
yellow | 255,255,0 | 1,1,0 | 黃色 |
magenta | 255,0,255 | 1,0,1 | 洋紅 |
cyan | 0,255,255 | 0,1,1 | 青色 |
blue | 0,0,255 | 0,0,1 | 藍色 |
black | 0,0,0 | 0,0,0 | 黑色 |
seashell | 255,245,238 | 1,0.96,0.93 | 海貝色 |
gold | 255,215,0 | 1,0.84,0 | 金色 |
pink | 255,192,203 | 1,0.75,0.80 | 粉紅色 |
brown | 165,42,42 | 0.65,0.16,0.16 | 棕色 |
purple | 160,32,240 | 0.63,0.13,0.94 | 紫色 |
tomato | 255,99,71 | 1,0.39,0.28 | 番茄色 |
turtle的RGB色彩模式
默認采用小數值,可以切換成整數值:
1 turtle.colormode(mode) 2 #1.0:RGB小數值模式 3 #255:RGB整數值模式
turtle程序語法元素分析:
庫引用:
擴充python程序功能的方式
用import保留字完成,采用<a>.<b>()編碼風格
import <庫名>
<庫名>.<函數名>(<函數參數>)
1 #PythonDraw.py 2 import turtle 3 turtle.setup(650, 350, 200, 200) 4 turtle.penup() 5 turtle.fd(-250) 6 turtle.pendown() 7 turtle.pensize(25) 8 turtle.pencolor("purple") 9 turtle.seth(-40) 10 for i in range(4): 11 turtle.circle(40, 80) 12 turtle.circle(-40, 80) 13 turtle.circle(40, 80/2) 14 turtle.fd(40) 15 turtle.circle(16, 180) 16 turtle.fd(40 * 2/3) 17 turtle.done()
可是,超級多的turtle,好煩,咋辦????
import的更多用法:
使用from和import保留字共同完成
from <庫名> import <函數名>
from <庫名> import *
<函數名>(<函數參數>)
1 #PythonDraw.py 2 from turtle import * 3 setup(650, 350, 200, 200) 4 penup() 5 fd(-250) 6 pendown() 7 pensize(25) 8 pencolor("purple") 9 seth(-40) 10 for i in range(4): 11 circle(40, 80) 12 circle(-40, 80) 13 circle(40, 80/2) 14 fd(40) 15 circle(16, 180) 16 fd(40 * 2/3) 17 done()
這么好的方法咋不早說呢???
因為第一種方法不會出現函數重名問題,而第二種方法會出現函數重名問題
import的更多用法
使用import和as保留字共同完成
import <庫名> as <庫別名>
<庫別名>.<函數名>(<函數參數>)
相當於給庫起個簡單的名字,如:狗娃
1 #PythonDraw.py 2 import turtle as t 3 t.setup(650, 350, 200, 200) 4 t.penup() 5 t.fd(-250) 6 t.pendown() 7 t.pensize(25) 8 t.pencolor("purple") 9 t.seth(-40) 10 for i in range(4): 11 t.circle(40, 80) 12 t.circle(-40, 80) 13 t.circle(40, 80/2) 14 t.fd(40) 15 t.circle(16, 180) 16 t.fd(40 * 2/3) 17 t.done()
這個方法比較推薦,也簡潔了代碼書寫。
下面我們來分析下面這段代碼的畫筆控制函數
1 turtle.penup() 2 turtle.fd(-250) 3 turtle.pendown() 4 turtle.pensize(25) 5 turtle.pencolor("purple")
畫筆操作后一直有效,一般成對出現
turtle.penup() #抬起畫筆,海龜在飛 別名:turtle.pu()
turtle.pendown() #方向畫筆,海龜在爬 別名:turtle.pd()
畫筆設置后一直有效,直到下次重新設置
turtle.pensize(width) 別名:turtle.width(width)
畫筆寬度,也就是海龜的腰圍
turtle.pencolor(color) color為顏色字符串或者RGB值
畫筆顏色,海龜在塗裝
pencolor(color)中的color參與可以有三種形式
1、顏色字符串 :turtle.pencolor("purple")
2、RGB的小數值:turtle.pencolor(0.63,0.13,0.94)
3、RGB的元組值:turtle.pencolor((0.63,0.13,0.94))
turtle的運動控制函數
控制海龜行進:走直線&走曲線
turtle.forward(d) 別名turtle.fd(d)
向前行進,海龜走直線
d:行進距離,可以為負數
turtle.circle(r,extend=None)
根據半徑r繪制extend角度的弧形
r:默認圓心在海龜左側r距離的位置
extent:繪制角度,默認360度整圓
方向控制函數
turtle.seth(45)
turtle.seth(-135)
控制海龜面對的方向:絕對角度和相對角度
turtle.left(angle) 海龜向左轉
turtle.right(angle) 海龜向右轉
angle:在海龜當前行進方向上旋轉的角度
循環語句與range()函數
1 for i in range(4): 2 tirtle.circle(40,80) 3 tirtle.circle(-40,80)
按照一定次數循環執行一組語句
for <變量> in range(<次數>):
<被循環執行的語句>
<變量>表示每次循環的計數,0到<次數>-1
range()函數:產生循環計數序列
range(N) 產生0到N-1的整數序列,共N個
range(M,N)產生M到N-1的整數序列,共N-M個