叮叮噹,叮叮噹!
聖誕節來臨啦!
這次,我們來看一看有什麼「獨特」的技巧在編程的世界中歡度一個不一樣的聖誕節?
首先來點兒簡單的!
ASCII Art - Christmas Tree!
ASCII ART?
這是啥?
小樂老師先來科普一波。
早年的電腦發展遠不如現在發達,隨意播放高清視頻,發送動態表情包在當時來說是非常困難的。
於是就有了這個:
使用電腦字符(主要是ASCII)來表達圖形或者圖像。
當然,還有一批「著名」的表情,讓我們來看看你能不能辨認出這些表情?
;-)
@_@
(=^_^=)
:-(
隨著科技的發展,ASCII ART逐漸變成了一類特殊的表現形式,比如:
那今天我們也來使用Python繪製一顆簡單的聖誕樹!
當然,是ASCII ART版本的!
代碼如下哦!
h = 10for i in range(h): print((" " * (h - i)) + ('*' * (2 * i + 1)))print((' ' * h) + '|')
調整h代表的數值,可以畫出不同高度的聖誕樹!
接下來,我們用之前學過的turtle庫來試試看吧!
turtle - 聖誕卡片!
聖誕節除了有聖誕樹之外,也會有互相贈送的聖誕小卡片!
如何使用Python來繪製一張聖誕小卡片呢?
一起來動手做一張吧!
首先,我們新建一個python文件。
導入turtle庫,進行一些簡單的準備工作。
import turtleimport random as rturtle.colormode(255)turtle.setup(1200,800)turtle.bgcolor('#69D9FF')turtle.exitonclick()
使用import語句導入了兩個重要的庫 - turtle和random。
如果你還不知道這些庫該怎麼使用,文末有關於turtle庫的過往教學哦!
turtle.setup(1200,800)
這行代碼的作用是將turtle庫提供的窗口大小設置為1200 * 800,你也可以設置成其他的大小。
turtle.exitonclick()
設置turtle窗口為點擊之後關閉,如果你是在vs code等編輯器中編寫的代碼,這行代碼非常有用!
turtle.colormode(255)
允許你使用RGB顏色來更進一步的指定想要的顏色。
你可以使用(255,255,255)來依次表示紅色、綠色和藍色的數值。
也可以使用"#69D9FF"這樣的十六進位顏色碼來表示一種顏色。
turtle.bgcolor('#69D9FF')
bgcolor指的是 - background color,也就是背景顏色啦!
使用這個指令,就可以把背景設置成我們想要的顏色。
聖誕節還有什么元素? 雪花對嗎?
使用random庫來隨機指定位置,可以很輕鬆的畫出下雪的背景。
import turtleimport random as rturtle.colormode(255)turtle.setup(1200,800)turtle.bgcolor('#69D9FF')t = turtle.Pen()t.speed(0)t.color('white')for i in range(120): t.penup() t.goto(r.randint(-600,600),r.randint(-400,400)) t.pendown() t.dot(r.randint(8,15))turtle.exitonclick()
t.dot()
用來繪製一個圓點
t.goto(r.randint(-600,600),r.randint(-400,400))
goto()指令可以讓畫筆t移動到指定的X和Y坐標的位置。
這裡X坐標使用了r.randint(-600,600)隨機的在-600 - 600的範圍內選一個數字,Y坐標同理。
重頭戲來啦!
我們畫一頂聖誕帽作為聖誕卡片的圖案,那麼該如何編寫代碼呢?
import turtleimport random as rturtle.colormode(255)turtle.setup(1200,800)turtle.bgcolor('#69D9FF')t = turtle.Pen() # 創建一支名叫t的畫筆t.speed(0) # 設置畫筆的速度t.color('white') # 設置畫筆的顏色for i in range(120): t.penup() t.goto(r.randint(-600,600),r.randint(-400,400)) t.pendown() t.dot(r.randint(8,15))t.penup()t.setpos(-150,0)t.pendown()t.color((230,54,36))t.begin_fill()for i in range(3): t.forward(300) t.left(120)t.end_fill()t.setheading(0)t.setpos(0,260)t.color('white')t.dot(60)t.setpos(-150,0)for i in range(11): t.dot(60) t.forward(30)turtle.exitonclick()
先來看看效果吧!
可以發現,聖誕帽主要是由三個部分組成:
由紅色三角形組成的帽身
頂部的白色圓形絨球
下方一連串白色的圓形組成的帽沿
通過動圖,大家可能看得更明白一些~
代碼中用到了兩個新的指令:setheading()和 setpos()
setheading()
設置畫筆t的方向,0的時候是向右
setpos()
設置畫筆的坐標位置
除此之外,聖誕卡片上通常會寫上祝福語,也會寫下自己的名字。
在turtle庫中,我們可以使用turtle.write()來完成!
import turtleimport random as rturtle.colormode(255)turtle.setup(1200,800)turtle.bgcolor('#69D9FF')t = turtle.Pen() # 創建一支名叫t的畫筆t.speed(0) # 設置畫筆的速度t.color('white') # 設置畫筆的顏色for i in range(120): t.penup() t.goto(r.randint(-600,600),r.randint(-400,400)) t.pendown() t.dot(r.randint(8,15))t.penup()t.setpos(-150,0)t.pendown()t.color((230,54,36))t.begin_fill()for i in range(3): t.forward(300) t.left(120)t.end_fill()t.setheading(0)t.setpos(0,260)t.color('white')t.dot(60)t.setpos(-150,0)for i in range(11): t.dot(60) t.forward(30)# 以下為新增代碼t.penup()t.setpos(-145,-120)t.pendown()t.color("#F62626")t.write('From 小樂老師',font=('Yuanti SC Regular',45,"bold"))t.penup()t.setpos(-215,-180)t.pendown()t.color("#086165")t.write('祝大家聖誕快樂!2021,學業有成!',font=('Yuanti SC Regular',30,"bold"))t.hideturtle()turtle.exitonclick()
t.hideturtle()
hideturtle()可以幫助我們把代表turtle的箭頭隱藏起來,如果你想要截圖送給你的小夥伴的話,使用hideturtle()可以更好的幫助你!
t.write()
這應該是我們今天用到的最複雜的指令啦!
在t.write()的括號中,我們首先需要輸入想要顯示出來的文字。如果你想調整字體,字號等設置,你需要使用font = ()!
在font = () 的括號中,依次填入:字體名稱,字號大小,粗細。
比如,這裡我使用了:圓體,45號字,加粗。
所以實際上的代碼是:
font=('Yuanti SC Regular',45,"bold")
那麼來見證最終的效果吧!
快去創建你專屬的聖誕賀卡吧!