Python初學(xué)日記|turtle畫(huà)圖的使用&畫(huà)一杯橙汁

前言

第一次來(lái)寫(xiě)博客十分激動(dòng)。:)
最近才開(kāi)始慢慢的學(xué)習(xí)python3,編程一直學(xué)的很爛,不過(guò)也是決定把平時(shí)一些迷惑和解決記錄下來(lái)加深印象,否則大概轉(zhuǎn)頭就忘了。
前兩天粗略學(xué)了turtle畫(huà)圖,本來(lái)對(duì)這麻煩的繪畫(huà)沒(méi)有太大興趣,但是在網(wǎng)上看了一圈發(fā)現(xiàn)就這簡(jiǎn)陋的東西大佬們都可以畫(huà)出超級(jí)好看的圖,遂決定自己也來(lái)畫(huà)一畫(huà)試試。

turtle的基本使用

首先要引入turtle庫(kù) import turtle
但是接下來(lái)函數(shù)都會(huì)需要turtle.xxx,這樣每次都要打一次,很麻煩。
所以我們可以給它import turtle as t重新命名,
或者直接全部引入from turtle import*,這樣的方法之后使用函數(shù)可以不用加前綴,但是當(dāng)里面的某函數(shù)名與其他函數(shù)重名的時(shí)候可能會(huì)出問(wèn)題,所以這種方法通常少用。不過(guò)在這里我們這個(gè)文件只使用turtle所以這個(gè)還是好用的。
(以下指令如果沒(méi)使用from turtle import*需要加上turtle.前綴)

1.畫(huà)布

  • screensize(width,height,bg) 里面三個(gè)參數(shù)分別是畫(huà)布寬,高,背景顏色。
    例如:screensize(800,600,'green')
    如果不填就返回默認(rèn)的大小400*300。
  • setup(width,height) 創(chuàng)建畫(huà)布。
  • bgcolor(color) 背景顏色。

這里這個(gè)顏色我之前在別處看到了一張圖,里面的顏色大部分可以使用,有些好像不能用,我沒(méi)挨個(gè)試過(guò),不過(guò)也從里面試過(guò)不少。有的有色差,總之就是親自試試就知道了。
python color對(duì)照.png

2.畫(huà)筆

  • pensize(size) 或者width(size) 畫(huà)筆的大小。
  • pencolor(color) 畫(huà)筆的顏色。同上可以使用已經(jīng)預(yù)置的顏色名稱,也可以自己用RGB調(diào)。
  • speed(speed) 畫(huà)筆速度,[0,10]數(shù)字越大越快。

3.繪制

默認(rèn)畫(huà)筆位置是畫(huà)布中心(原點(diǎn)),方向是x軸正方向。

  • forward(x) 向前行進(jìn)x距離。簡(jiǎn)寫(xiě)fd。
  • backward(x) 向后退x距離。簡(jiǎn)寫(xiě)bk。
  • right(angle) 向右轉(zhuǎn)angle角度。簡(jiǎn)寫(xiě)rt。
  • left(angle) 向左轉(zhuǎn)angle角度。簡(jiǎn)寫(xiě)lt。(個(gè)人認(rèn)為簡(jiǎn)寫(xiě)了反而很亂||)
  • penup() 抬筆,此時(shí)之后操作不會(huì)畫(huà)在畫(huà)布上,只是移動(dòng)畫(huà)筆位置。簡(jiǎn)寫(xiě)pu/up。
  • pendown() 落筆,此時(shí)之后操作會(huì)在畫(huà)布上繪制。簡(jiǎn)寫(xiě)pd/down。
  • goto(x,y) 移動(dòng)到(x,y)位置。我的疑惑目前還不知道goto之后畫(huà)筆的方向是如何變化,也沒(méi)查到有人說(shuō)這個(gè)問(wèn)題,因此我在使用goto之后會(huì)執(zhí)行一個(gè)forward看一下方向再繼續(xù)寫(xiě)。后面再提這個(gè)問(wèn)題。
  • circle(x,angle) 以x為半徑畫(huà)圓/圓弧。此處的半徑是正數(shù)則從畫(huà)筆方向往左開(kāi)始圓弧,負(fù)數(shù)則往右。
    下面還有兩個(gè)關(guān)于是否顯示我們的畫(huà)筆箭頭圖標(biāo)的指令。
  • hideturtle() 隱藏turtle。
  • showturtle() 顯示turtle。
    為了美觀我們可以隱藏一下。

4.填色

首先在畫(huà)我們需要填色的圖形前使用

  • begin_fill() 表示開(kāi)始填色狀態(tài),不過(guò)此時(shí)并不會(huì)產(chǎn)生變化。
    之后我們可以繪制一個(gè)封閉圖形。
  • fillcolor(color) 設(shè)置想填充的顏色。
  • end_fill() 表示結(jié)束填色狀態(tài),此時(shí)我們的圖形就被填上色了。

最后所有東西都畫(huà)完加上結(jié)束指令

  • done()

下面還有幾個(gè)我沒(méi)用到的指令。

  • reset() 清空窗口恢復(fù)原始狀態(tài)。
  • setheading(angle) 設(shè)置當(dāng)前畫(huà)筆角度為angle。(啊!我要是早看見(jiàn)這條就不用那么費(fèi)勁了)
  • write(s,[font=("font-name",font_size,"font_type")]) 文本指令,可以打字并且設(shè)置參數(shù)。s為文本內(nèi)容,font是字體的參數(shù),分別為字體名稱,大小和類型。
    還有一些沒(méi)提到的指令,比較少用。

來(lái)畫(huà)一杯橙汁

看到了別人畫(huà)的櫻花樹(shù)、卡通形象等等十分精致,我覺(jué)得我不行。不過(guò)又不想copy別人的代碼回來(lái),還是想自己畫(huà),于是本橙汁愛(ài)好者果然還是要畫(huà)橙汁!

那這里是我畫(huà)成的結(jié)果。
turtle橙汁.JPG

代碼如下:

from turtle import *
setup(800,600)
bgcolor("bisque")
speed(10)
pensize(8)
penup()

'''cup'''
pencolor('lightblue')
goto(-100,-150)
right(30)
pendown()
circle(200,60)
left(60)
forward(250)
left(60)
circle(200,60)
left(120)
circle(200,60)
penup()
goto(-100,100)
pendown()
goto(-100,-150)

'''lemon'''
penup()
pencolor('yellow')
goto(-100,60)
pd()
right(30)
circle(60)
penup()
pensize(4)
goto(-100,70)
pd()
begin_fill()
color('yellow','khaki')
circle(50)
end_fill()
for i in range(4):
circle(50,45)
left(90)
forward(100)
left(90)
penup()

'''juice'''
goto(-100,-150)
begin_fill()
color('orange')
pencolor('lightblue')
right(90)
pd()
forward(130)
pencolor('orange')
circle(-50,180)
circle(50,180)
pencolor('lightblue')
goto(100,-150)
penup()
goto(-100,-150)
right(120)
pendown()
circle(200,60)
end_fill()

pencolor('white')
pensize(10)
penup()
goto(80,30)
pd()
goto(80,-40)
penup()
goto(80,-60)
pd()
goto(80,-65)
hideturtle()
penup()
pencolor('seashell')
goto(0,0)
pd()
goto(80,170)
goto(110,188)
done()

雖然分成了幾個(gè)不同的部分繪制,但順序并不能調(diào)換。
因?yàn)槊恳徊蕉际窃谏弦徊竭M(jìn)行完的位置基礎(chǔ)上進(jìn)行,也涉及到之前那個(gè)goto執(zhí)行完畫(huà)筆的角度未知,可能前序操作不同goto之后的角度也不同。
如果使用剛才看到的那個(gè)設(shè)置畫(huà)筆角度的指令進(jìn)行角度的初始化加上每個(gè)板塊之前都用goto位置初始化,也許可以解決這個(gè)問(wèn)題。

雖然沒(méi)有用到任何高大上的方法,只是很簡(jiǎn)單的畫(huà)圖,我也比較心滿意足了。
在此記錄一下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容