Python 也能畫出勾錐的皮卡丘? 來研究一下完整程式碼, 看看是怎麼辦到的吧?
前陣子上映的名偵探皮卡丘劇照
大家都知道前陣子上映的動畫電影「名偵探皮卡丘」票房成績不俗,賣座程度僅次於「復仇者聯盟-終局之戰」。雖然電影中的那隻敲~可~愛~的皮卡丘是以「賤萌」的形式呈現,但也激起許多工程師小時候時看「神奇寶貝」中,那隻呆萌的皮卡丘的回憶。在大陸就有熱血的 Python 工程師使用 Python 的 「海龜」 Turtle 繪圖模塊,畫起皮卡丘來,而且還畫得唯妙唯肖的!先看看以下的效果吧:
大陸網友文摘菌用Python來畫皮卡丘,畫得唯妙唯肖 (圖片來源:https://mp.weixin.qq.com)
步驟:先選好畫板大小、設置好畫筆顏色、粗細,再定位好位置後,開始畫鼻子、頭、耳朵、眼睛、嘴、身體、手腳、尾巴。Python 的 Turtle graphics 模塊,中文直譯為「海龜繪圖」,是提供給兒童學習程式語言用的模組。想像螢幕上有一隻帶著畫筆的海龜在 X,Y 軸平面座標上,從座標 (0,0) 出發。你給牠下指令「turtle.forward(15)」,牠就會往前走 15 像素的距離,接者你下指令「turtle.right(25)」,牠就會朝向順時針 25 度的方向轉彎。不斷對著海龜重複著這類型的指令,海龜就能完成一幅圖畫。
透過定位下指令移動畫筆位置的海龜繪圖(Turtle graphics)模塊
上圖用 Python 繪製的皮卡丘,就是靠著不斷的指定座標,定位與方向而完成的。以下提供這個範例的部分 Python 程式碼以供參考:
Python初學者可先學習畫出皮卡丘的臉 (圖片來源:https://blog.csdn.net/hl_zmfh/article/details/83215693)
其實除了 Python 之外, Java 也有 Turtle 海龜繪圖功能。有興趣的人可以嘗試用 Java 畫皮卡丘看看喔。
✌推薦閱讀:
Get Python 課程後,你可以秒殺人工智慧
你也可以幫人得到快樂只要你學Python 課程
再不學Python課程你就等著輸給一個會說話的鐵製品
厭世代正風行?來上Java課程可以幫你扭轉困境!
高薪像做夢?!Java課程讓你夢想成真!
信不信由你,因為Java課程讓我獲得我想要的生活!
還在為成為專業IT人煩惱?!選對Java課程讓你輕鬆到位!
Python 也能畫出勾錐的皮卡丘? 來研究一下完整程式碼, 看看是怎麼辦到的吧? |
大家都知道前陣子上映的動畫電影「名偵探皮卡丘」票房成績不俗,賣座程度僅次於「復仇者聯盟-終局之戰」。雖然電影中的那隻敲~可~愛~的皮卡丘是以「賤萌」的形式呈現,但也激起許多工程師小時候時看「神奇寶貝」中,那隻呆萌的皮卡丘的回憶。在大陸就有熱血的 Python 工程師使用 Python 的 「海龜」 Turtle 繪圖模塊,畫起皮卡丘來,而且還畫得唯妙唯肖的!先看看以下的效果吧:
大陸網友文摘菌用Python來畫皮卡丘,畫得唯妙唯肖 (圖片來源:https://mp.weixin.qq.com)
步驟:先選好畫板大小、設置好畫筆顏色、粗細,再定位好位置後,開始畫鼻子、頭、耳朵、眼睛、嘴、身體、手腳、尾巴。Python 的 Turtle graphics 模塊,中文直譯為「海龜繪圖」,是提供給兒童學習程式語言用的模組。想像螢幕上有一隻帶著畫筆的海龜在 X,Y 軸平面座標上,從座標 (0,0) 出發。你給牠下指令「turtle.forward(15)」,牠就會往前走 15 像素的距離,接者你下指令「turtle.right(25)」,牠就會朝向順時針 25 度的方向轉彎。不斷對著海龜重複著這類型的指令,海龜就能完成一幅圖畫。
透過定位下指令移動畫筆位置的海龜繪圖(Turtle graphics)模塊
上圖用 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初學者可先學習畫出皮卡丘的臉 (圖片來源:https://blog.csdn.net/hl_zmfh/article/details/83215693)
✌推薦閱讀:
Get Python 課程後,你可以秒殺人工智慧
你也可以幫人得到快樂只要你學Python 課程
再不學Python課程你就等著輸給一個會說話的鐵製品
厭世代正風行?來上Java課程可以幫你扭轉困境!
高薪像做夢?!Java課程讓你夢想成真!
信不信由你,因為Java課程讓我獲得我想要的生活!
還在為成為專業IT人煩惱?!選對Java課程讓你輕鬆到位!