摘要:啥是佩奇已不重要。佩奇是他用搜集的所有信息,一點一滴的用心創造編織愛的過程。畫佩奇的代碼已經上傳到后臺,公眾號后臺回復社會人即可獲取。
“你告訴爺爺你需要什么東西呀,爺爺給你準備,佩奇,什么是佩奇呀?”...
這是一個發生在大山里的故事,但故事的情節所有人都不會陌生。快過年了,在農村爺爺給城里的孫子打電話,孫子說想要“佩奇”,為了滿足孩子的心愿,爺爺開始滿村子找佩奇…
當除夕夜家人團聚,爺爺開始展示愛心禮物,“硬核佩奇”的出現,驚呆眾人高能反轉,別出心裁的愛跨越了隔代距離,成功博得孫子歡心。
啥是佩奇?已不重要。佩奇是他用搜集的所有信息,一點一滴的用心創造、編織愛的過程。佩奇是對孫子的關愛、佩奇是對團圓的企盼。
看著爺爺滿村子找佩奇,鼻子有點酸,作為程序猿我想用Python來告訴爺爺,啥是佩奇?用python做一個社會人,這是很久之前的一篇文章,Turtle是自己接觸python之后用到的第一個庫,Trutle這個庫很有意思,很容易得到滿足感,學習完以后自己隨手畫了一個佩奇,佩奇當時沒火沒想到今天火了。畫佩奇的代碼已經上傳到后臺,公眾號后臺回復【社會人】即可獲取。今天的文章再次給大家介紹一下Turtle,用它來畫高級一點的東西,話不多說我們開始吧。
程序介紹
在Python中有很多編寫圖形程序的方法,一個簡單的啟動圖形化程序設計的方法是使用Python內嵌的Turtle模塊。Turtle是Python內嵌的繪制線、圓以及其他形狀(包括文本)的圖形模塊。它很容易學習并且使用簡單。
一個Turtle實際上是一個對象,在導入Turtle模塊時,就創建了對象,然后,可以調用Turtle對象的各種方法完成不同的操作。
當創建一個Turtle對象時,它的位置被設定在(0,0)處——窗口的中心,而且它的方向被設置為向右。Turtle模塊用筆來繪制圖形。默認情況下,筆是向下的(就像真實的筆尖觸碰著一張紙)。如果筆是向下的,那么當移動Turtle的時候,它就會繪制出一條從當前位置到新位置的線。
今天我們要畫的是一個可以獲取當前時間的鐘表。
具體實現
因為鐘表輪廓中是有幾個小黑點的,那么我們首先需要設置畫筆的動作,抬起畫筆向前一段距離以后再放下
1def Skip(step):
2 turtle.penup()
3 turtle.forward(step)
4 turtle.pendown()
注冊Turtle的形狀,建立一個表針Turtle,同時記錄多邊形起點和終點。(當前的烏龜位置是多邊形的第一個頂點,多邊形的最后一個頂點將與第一個頂點相連)返回最后記錄的多邊形。
1def mkHand(name, length):
2 turtle.reset()
3 Skip(-length * 0.1)
4 turtle.begin_poly()
5 turtle.forward(length * 1.1)
6 turtle.end_poly()
7 handForm = turtle.get_poly()
8 turtle.register_shape(name, handForm)
因為鐘表有三個指針,現在需要建立三個表針Turtle并初始化,同時還需要建立一個輸出文字的Turtle
1def Init():
2 global secHand, minHand, hurHand, printer
3 turtle.mode("logo")
4 mkHand("secHand", 135)
5 mkHand("minHand", 125)
6 mkHand("hurHand", 90)
7 secHand = turtle.Turtle()
8 secHand.shape("secHand")
9 minHand = turtle.Turtle()
10 minHand.shape("minHand")
11 hurHand = turtle.Turtle()
12 hurHand.shape("hurHand")
13
14 for hand in secHand, minHand, hurHand:
15 hand.shapesize(1, 1, 3)
16 hand.speed(10)
17
18
19 printer = turtle.Turtle()
20 printer.hideturtle()
21 printer.penup()
現在需要定義時間格式
1def Week(t):
2 week = ["星期一", "星期二", "星期三",
3 "星期四", "星期五", "星期六", "星期日"]
4 return week[t.weekday()]
5
6
7def Date(t):
8 y = t.year
9 m = t.month
10 d = t.day
11 return "%s %d%d" % (y, m, d)
繪制指針的動態顯示
1def Tick():
2
3 t = datetime.today()
4 second = t.second + t.microsecond * 0.000001
5 minute = t.minute + second / 60.0
6 hour = t.hour + minute / 60.0
7 secHand.setheading(6 * second)
8 minHand.setheading(6 * minute)
9 hurHand.setheading(30 * hour)
10
11 turtle.tracer(False)
12 printer.forward(65)
13 printer.write(Week(t), align="center",
14 font=("Courier", 14, "bold"))
15 printer.back(130)
16 printer.write(Date(t), align="center",
17 font=("Courier", 14, "bold"))
18 printer.home()
19 turtle.tracer(True)
20
21 # 100ms后繼續調用tick
22 turtle.ontimer(Tick, 100)
現在是重頭戲了,繪制鐘表的輪廓,這的主要邏輯就是一個循環,不難于理解。
1def SetupClock(radius):
2 turtle.reset()
3 turtle.pensize(7)
4 for i in range(60):
5 Skip(radius)
6 if i % 5 == 0:
7 turtle.forward(20)
8 Skip(-radius - 20)
9
10 Skip(radius + 20)
11 if i == 0:
12 turtle.write(int(12), align="center", font=("Courier", 14, "bold"))
13 elif i == 30:
14 Skip(25)
15 turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
16 Skip(-25)
17 elif (i == 25 or i == 35):
18 Skip(20)
19 turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
20 Skip(-20)
21 else:
22 turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))
23 Skip(-radius - 20)
24 else:
25 turtle.dot(5)
26 Skip(-radius)
27 turtle.right(6)
寫在最后
學習就是舉一反三,希望你可以用turtle畫出更有意思的東西來。
鐘表的完整代碼需要后臺回復【鐘表】獲取
【推薦閱讀】
致青春--Python實現俄羅斯方塊
【Python爬蟲】Urllib的使用(2)
【LeetCode】貪心算法--劃分字母區間(763)
機器學習實戰--住房月租金預測(3)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73077.html
摘要:啥是佩奇已不重要。佩奇是他用搜集的所有信息,一點一滴的用心創造編織愛的過程。畫佩奇的代碼已經上傳到后臺,公眾號后臺回復社會人即可獲取。 你告訴爺爺你需要什么東西呀,爺爺給你準備,佩奇,什么是佩奇呀?... 這是一個發生在大山里的故事,但故事的情節所有人都不會陌生。快過年了,在農村爺爺給城里的孫子打電話,孫子說想要佩奇,為了滿足孩子的心愿,爺爺開始滿村子找佩奇… 當除夕夜家人團聚,爺爺開...
摘要:所以一開始讓我看小豬佩奇的時候我是拒絕的,因為你不能讓我看,我就馬上去看,第一我要試一下。其實這道題對于真正看了小豬佩奇的人來說是送分題,就看是不是真的看了。這里說的都是類,這也正是小豬佩奇的構圖精髓,一種手繪風格,而不是標準刻板的線條。 歡迎大家前往騰訊云+社區,獲取更多騰訊海量技術實踐干貨哦~ 作者:江志耿 | 騰訊TEG網絡工程師 我是佩奇,哼,這是我的弟弟喬治,呱呱,這是我的媽...
摘要:主要有以下幾個步驟找一張小豬喬治的圖片參考對圖片中的部分進行分解,并逐一實現廢話其實掌握了后,這些步驟都不難了,細心繪制就可以完成啦。我繪制的小豬喬治如圖參考資料用畫小豬佩奇,你就是下一個社會人 概述 之前看了一篇關于用CSS來畫小豬佩奇的文章,抱著鍛煉自己的心態造了個輪子,畫了個佩奇的小弟喬治,效果可以看這里,源碼在這里。 開發過程中也讓我對border-radius這個屬性有了更深...
摘要:于是乎,我建立了這個項目,收錄一些有趣的小程序,便于閱讀和思考。下面是一些列舉一些有趣的內容這是來自編程從入門到實踐中的一個小游戲。用語言實現的編譯器。做的小博客,持續開發中這個項目還在不斷豐富中,如果你有什么有趣的分享,歡迎聯系我。 紙上得來終覺淺,絕知此事要躬行。 這本書或這個視頻看完了,我可以做點什么?編程難道只是命令行打印些東西?該找點什么適合練手的項目來練習練習呢? 我想可能...
摘要:每天一個社會人實現效果想法之前看到一篇博客,使用繪制出了小豬佩奇,所以自己想試一試,采用純繪制出低配版的小豬佩奇。在布局上,沒有堅持嵌套,導致縮放時位置錯位,如果想實行縮放一致,可采用小豬的頭部嵌套布局實現。 每天一個CSS-社會人 實現效果 showImg(https://segmentfault.com/img/remote/1460000016461611?w=667&h=620...
閱讀 3527·2021-10-09 09:41
閱讀 2733·2021-10-08 10:18
閱讀 2164·2021-09-10 10:51
閱讀 2668·2021-09-10 10:50
閱讀 763·2021-09-09 09:33
閱讀 3369·2021-09-06 15:14
閱讀 3002·2019-08-30 11:06
閱讀 3230·2019-08-29 14:04