【工程師的寶可夢魂】PS 弱爆了!我們用 Python 打造屬於自己的皮卡丘

【為什麼我們要挑選這篇文章】近期《POKÉMON 名偵探皮卡丘》火熱上映,再次激起大家的童年回憶。但我們不是畫家、設計師、動畫師,既不會用畫筆,也不會操作 Photoshop、Illustrator 等繪圖軟體,但我們會 Python 阿!

下文,工程師將開展設計新技能:用 Python 畫皮卡丘!(責任編輯:郭家宏)

還記得小時候瘋狂收集和交換神奇寶貝卡片的經歷嗎?

還記得和小夥伴拿著精靈球,一起召喚小精靈的中二模樣嗎?

最近上映的《POKÉMON 名偵探皮卡丘》,是否會讓你秒回童年,進入那個充滿神奇寶貝的世界,和小智一起踏上成為寶可夢大師的旅程呢?

雖然,電影中的皮卡丘是一位中年大叔,但是看過電影的文摘菌(本文作者)依然想起了寶可夢世界裡 20 多年不變的明星寶可夢。

皮卡丘臉頰兩邊有著小小的電氣袋,因此他獨有的能力就是可以放電。在動畫片中,小智的皮卡丘性格十分害羞,稍有不滿就亂放電電人。

小時候也想擁有一隻會放電的皮卡丘,長大後漸漸明白,這種高度智慧,會放電的「動物」只存在於夢中。

素描、PS 太弱了!工程師就該用 Python 畫皮卡丘阿

不怕!不怕!雖然現實中沒有,但是我們可以畫一隻!素描什麼的都弱爆了,我們來用 Python 畫一隻。

經過一整天的苦戰,從未接觸過 turtle 庫的文摘菌實現了從 0 到 1,成就感滿滿。

基本思路:選好畫板大小,設置好畫筆顏色,粗細,定位好位置,然後畫鼻子,頭、耳朵,眼睛,嘴,身體,手腳,尾巴。

都知道,turtle 是 python 內建的一個比較有趣味的模組,俗稱海龜繪圖,它是基於 tkinter 模組打造,提供一些簡單的繪圖工具。

turtle 的繪圖方式非常簡單直觀,想像有一隻尾巴上沾著顏料的小海龜在電腦屏幕上爬行,隨著它的移動就能畫出線條來。

使用海龜作圖,我們不僅能夠只用幾行程式碼就創建出令人印象深刻的視覺效果,而且還可以跟隨海龜看看每行程式碼如何影響到它的移動。這能夠幫助我們理解程式碼的邏輯。所以海龜作圖也常被用作新手學習 Python 的一種方式。

更豐富詳細的功能及知識可以參考 官方文檔

用 turtle 畫圖邏輯不難,難的是「定位」

瞭解了 tuttle 的用法之後就可以開始實戰了。

部分程式碼示範:

import turtle as t

def infoPrt():
print(‘coordinate: ‘ + str(t.pos()))
print(‘angle: ‘ + str(t.heading()))

t.pensize(3)
t.hideturtle()
t.colormode(255)
t.color(“black”)
t.setup(700, 650)
t.speed(10)
t.st()
#t.dot()
t.pu()
#t.goto(-150,100)
t.goto(-210,86)
t.pd()
infoPrt()

# 頭
print(‘ 頭’)
t.seth(85)
t.circle(-100,50)
#t.seth(78)
#t.circle(-100,25)
infoPrt()

t.seth(25)
t.circle(-170,50)
infoPrt()

# 右耳
print(‘ 右耳’)
t.seth(40)
#t.circle(-250,52)
t.circle(-250,30)
infoPrt()
# 右耳尖
t.begin_fill()
# 左
t.circle(-250,22)
#t.fillcolor(“pink”)
# 右
t.seth(227)
t.circle(-270, 15)

prePos = t.pos()
infoPrt()
# 尾巴
t.pu()
t.setpos(p_tail)
t.pd()

t.begin_fill()
t.seth(50)
t.fd(25)
t.seth(-50)
t.fd(30)
p_tail1=t.pos
t.seth(-140)
t.fd(36)
t.end_fill()
t.seth(39)

# 右尾和 h1
t.fd(72)

# 右尾和 v1
t.seth(125)
t.fd(48)

# 右尾和 h2
t.seth(40)
t.fd(53)

# 右尾和 v2
t.seth(88)
t.fd(45)

# 右尾和 h3
t.seth(35)
t.fd(105)
# 右尾和 v3
t.seth(105)
t.circle(850, 8)
#t.fd(105)
t.seth(215)
#t.fd(125)
t.circle(850, 11)
t.seth(280)
t.fd(110)
t.seth(220)
t.fd(50)
t.seth(309)
t.fd(56)

完整程式碼需要 360 行,為了限於篇幅,只放了一部分程式碼。

使用 turtle 畫圖,思路其實很簡單,就是透過 trutle 模組實現基本的圓,橢圓,曲線等,難點在於如何定位每個部位的位置。

對於初學者,文摘菌建議先入手比較簡單的項目,比如:

這個皮卡丘,只給出了臉部繪畫,相比全身畫像,需要考慮的構件相對少一些,適合新手入門。

註:第二個項目程式碼參考網路資料, 此為連結 ,感謝丁彥軍對具體程式碼做了修改。

(本文經 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 实现童年宝可梦,教你用 Python 画一只属于自己的皮卡丘 〉 。首圖來源:Max Pixel CC Licensed)

更多 Python 技術

【GitHub 上破萬顆星】Python 新手 100 天學習計劃,這次學不會算我輸!
【內附程式碼】工程師技能大全:如何用 Python 寫出所有的演算法?
GitHub 神人整理出一份 Python 開源清單:15 個領域、181 個開源項目任你用

點關鍵字看更多相關文章: