20 C
Taipei
星期一, 6 12 月, 2021
Home程式設計課程Python工程師用 Python 畫出皮卡丘,效果媲美 PS 與 Ai!(附教學)

工程師用 Python 畫出皮卡丘,效果媲美 PS 與 Ai!(附教學)

2019 年上映的動畫電影「名偵探皮卡丘」票房成績僅次於「復仇者聯盟-終局之戰」。電影中的那隻「賤萌」的皮卡丘,激起許多工程師小時候看「神奇寶貝」中的那隻「呆萌」的小皮卡丘。在大陸就有熱血的工程師使用 Python 的 「海龜」 Turtle 繪圖模塊畫出皮卡丘,而且還畫得唯妙唯肖,完全不輸給 Illustrator 插畫!先看看以下的效果吧:

用Python來畫皮卡丘
▲ 大陸網友「文摘菌」用Python畫皮卡丘

 

步驟:先選好畫板大小、設置好畫筆顏色、粗細,再定位好位置後,開始畫鼻子、頭、耳朵、眼睛、嘴、身體、手腳、尾巴。Python 的 Turtle graphics 模塊,中文直譯為「海龜繪圖」,是提供給兒童學習程式語言用的模組。

海龜繪圖
▲ 透過定位下指令移動畫筆位置的海龜繪圖 (Turtle graphics) 模塊

 

「海龜繪圖」如同螢幕上有一隻帶著畫筆的海龜在 X,Y 軸平面座標上,從座標 (0,0) 出發。你給牠下指令「turtle.forward(15)」,牠就會往前走 15 像素的距離,接者你下指令「turtle.right(25)」,牠就會朝向順時針 25 度的方向轉彎。不斷對海龜重複著這類型的指令,海龜就能完成一幅圖畫。

「文摘菌」用Python繪製的皮卡丘,就是靠著不斷的指定座標,定位與方向而完成的。以下提供這個範例的部分 Python 程式碼以供參考:

                        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 海龜模組畫圖,原理非常簡單,只要先定位好座標再畫出曲線即可。難的是每個部位的位置定位。

Python 初學者不想畫那麼複雜的話,可先學習只畫出皮卡丘的臉即可 (如下圖)。作法參考另一位網友的 CSDN 博客文章:
教大家用 python 画皮卡丘的脸」。

用Python畫出皮卡丘的臉
▲ 初學者可先由畫出皮卡丘的臉入門 Python

其實除了 Python 之外,Java 也有 Turtle 海龜繪圖功能。有興趣的人可以嘗試用 Java 畫皮卡丘看看喔。

最新文章

熱門文章