利用Python繪制一個可愛的米老鼠
楊紫和肖戰(zhàn)的《余生請多指教》于3月15日起騰訊視頻全網獨播,湖南衛(wèi)視金鷹獨播劇場晚8:20播放。對于楊紫的純劇粉(戰(zhàn)長沙入的坑圖片),想要用Python制作一份獨特的宣傳視頻。
一、效果展示
在介紹代碼之前,先來看下本文的實現(xiàn)效果。
二、代碼詳解
python繪制米老鼠的原理是:應用turtle庫首先繪制頭的外輪廓,然后繪制耳朵、手、衣服、褲子、腳、鞋子等不同模塊。
1.導入庫
首先導入本文需要加載的庫,如果你有些庫還沒有安裝,導致運行代碼時報錯,可以在Anaconda Prompt中用pip方法安裝。
import os import pygame import turtle as t
本文應用到的庫較少,只應用了os、pygame和turtle三個庫。os庫可以設置文件讀取的位置。pygame庫是為了繪制過程更有趣,在繪圖過程中添加了背景音樂。turtle庫是繪圖庫,相當于給你一支畫筆,你可以在畫布上用數(shù)學邏輯控制的代碼完成繪圖。
2.播放音樂
接著應用pygame庫播放背景音樂,本文的音樂是關于《余生請多指教》的歌曲。
#播放音樂 print('播放音樂') pygame.mixer.init() pygame.mixer.music.load(r"F:\公眾號\49.余生請多指教\楊紫,肖戰(zhàn) - 余生請多指教 (Live).mp3") pygame.mixer.music.set_volume(0.5) pygame.mixer.music.play(1, 10)
這一部分的代碼和整體代碼是剝離的,可以選澤在最開始放上該代碼,也可以直接刪除。如果選擇播放音樂,需要在代碼music.load函數(shù)中把你想放音樂的地址填進去。
3.畫米老鼠頭部外輪廓
然后進入米老鼠的正式繪制過程,先畫的是頭部外輪廓。
t.title('阿黎逸陽的代碼公眾號') t.speed(10) #t.screensize(1000, 800) t.setup(startx=0, starty = 0, width=800, height = 600) ##畫外輪廓 #畫頭 print('畫頭') t.penup() t.goto(20, 100) t.begin_fill() t.left(90) t.pendown() t.color('black') t.pensize(2) t.circle(60, 190) t.left(150) t.circle(-20, 110) t.left(170) t.circle(-35, 100) t.circle(-15, 100) t.left(140) t.circle(-15, 100) t.circle(-35, 95) t.left(160) t.circle(-20, 72) t.end_fill() t.left(20) t.circle(-10, 80) t.begin_fill() t.circle(-60, 55) t.left(60) t.forward(20) t.left(130) t.forward(130) t.left(120) t.circle(-60, 30) t.left(95) t.forward(65) t.end_fill() t.penup() t.goto(-100, 89) t.pendown() t.left(30) t.circle(20, 60) t.right(15) t.circle(60, 30) t.begin_fill() #下巴 print('畫下巴') #t.right(30) t.circle(60, 20) t.right(30) t.circle(33, 110)
關鍵代碼詳解:
t.pensize(width):設置畫筆的尺寸。
t.color(color):設置畫筆的顏色。
t.penup():抬起畫筆,一般用于另起一個地方繪圖使用。
t.goto(x,y):畫筆去到某個位置,參數(shù)為(x,y),對應去到的橫坐標和縱坐標。
t.pendown():放下畫筆,一般和penup組合使用。
t.left(degree):畫筆向左轉多少度,括號里表示度數(shù)。
t.right(degree):畫筆向右轉多少度,括號里表示度數(shù)。
t.circle(radius,extent,steps):radius指半徑,若為正,半徑在小烏龜左側radius遠的地方,若為負,半徑在小烏龜右側radius遠的地方;extent指弧度;steps指階數(shù)。
畫外輪廓的關鍵是:通過調節(jié)circle函數(shù)中的半徑和弧度來調節(jié)曲線的弧度,從而使得米老鼠的輪廓比較流暢。
4.畫衣服和耳朵
畫完頭部外輪廓后就可以分模塊畫其它組成部分了,本小節(jié)畫衣服和耳朵。
#上半身 t.backward(5) t.right(150) t.forward(18) #t.left(10) t.circle(-100, 25) #衣服下弧線 print('畫衣服下弧線') t.right(50) t.circle(-75, 63) t.left(60) t.circle(100, 30) t.right(80) t.circle(-30, 70) t.circle(-20, 55) t.forward(70) t.end_fill() t.penup() t.goto(-100, -10) t.pendown() t.pensize(1.2) t.left(175) #t.pencolor('red') t.pencolor('white') t.circle(-30, 30) #胳肢窩處的線 #1 t.penup() t.goto(-81, -3) t.pendown() t.pensize(1.3) t.setheading(30) #t.pencolor('red') t.pencolor('white') t.forward(13) #2 t.penup() t.goto(-81, -3) t.pendown() t.pensize(1.3) t.setheading(-18) #t.pencolor('red') t.pencolor('white') t.circle(20, 32) ##畫耳朵 #畫右耳朵 print('畫右耳朵') t.penup() t.goto(8, 140) t.pendown() t.begin_fill() t.setheading(-10) t.color('black') t.circle(30, 160) t.circle(60, 20) t.circle(30, 160) t.end_fill() #畫左耳朵 print('畫左耳朵') t.penup() t.goto(-90, 130) t.pendown() t.begin_fill() t.setheading(40) t.color('black') t.circle(30, 160) t.circle(60, 20) t.circle(30, 160) t.circle(60, 20) t.end_fill()
5.畫眼睛、鼻子、嘴
本小節(jié)介紹畫眼睛、鼻子、嘴的代碼,為了看起來效果更好,需要注意的是眼睛的對稱。
#畫眼睛 print('畫眼睛') #眼睛下方的線 t.penup() t.goto(-48, 105) t.pendown() t.pensize(1.5) t.right(17) t.circle(-40, 42) #左眼睛 t.penup() t.goto(-42, 106) t.pendown() t.left(160) t.circle(-30, 50) t.circle(-7, 180) t.left(30) t.circle(-30, 44) #左眼珠 t.penup() t.goto(-42, 106) t.pendown() t.begin_fill() t.right(140) t.circle(30, 20) t.circle(-4, 180) #t.left(25) t.circle(-15, 51) t.end_fill() #右眼睛 t.penup() t.goto(-29, 107) t.pendown() t.right(160) t.circle(-50, 28) t.circle(-7, 180) t.left(17) t.circle(-30, 46) #右眼珠 t.penup() t.goto(-29, 107) t.pendown() t.begin_fill() t.right(140) t.circle(30, 20) t.circle(-4, 180) #t.left(25) t.circle(-15, 51) t.end_fill() #畫鼻子 print('畫鼻子') t.penup() t.goto(-42, 102) t.pendown() t.begin_fill() t.setheading(15) t.circle(-40, 22) t.circle(-7, 180) t.circle(40, 20) t.right(43) t.circle(-7, 180) t.end_fill() #畫嘴 print('畫嘴') #上弧線 t.penup() t.goto(-80, 85) t.pendown() t.pensize(1.7) t.setheading(-45) t.circle(60, 90) #嘴 t.begin_fill() t.penup() t.goto(-67, 73) t.pendown() t.setheading(-70) t.circle(60, 30) t.circle(20, 100) t.right(10) t.circle(60, 25) t.setheading(210) t.circle(-60, 55) t.end_fill() #畫舌頭 print('畫舌頭') t.penup() t.goto(-60, 57) t.pendown() t.begin_fill() t.setheading(40) t.color('black','pink') t.circle(-18, 90) t.setheading(61) t.circle(-16, 90) t.setheading(-122) t.circle(-60, 20) t.setheading(200) t.circle(-50, 20) t.setheading(150) t.circle(-60, 20) t.end_fill() #畫笑臉弧度 #左弧度 t.penup() t.goto(-86, 77) t.pendown() t.pensize(1.7) t.setheading(70) t.circle(-18, 60) #右弧度 t.penup() t.goto(-5, 86) t.pendown() t.pensize(1.7) #t.setheading(10) t.circle(-18, 60) print('畫下巴') #畫下巴 t.penup() t.goto(-58, 40) t.pendown() t.setheading(140) t.circle(-60, 10) #右嘎吱窩 t.penup() t.goto(-2, 40) t.pendown() t.pencolor('white') t.pensize(1.2) t.setheading(-90) t.forward(11)
其余代碼用到的函數(shù)也大致相同,由于篇幅原因,本文不再一一展示。
以上就是利用Python繪制一個可愛的米老鼠的詳細內容,更多關于Python米老鼠的資料請關注腳本之家其它相關文章!
相關文章
快速下載VScode并配置Python運行環(huán)境(圖文教程)
本文主要介紹了快速下載VScode并配置Python運行環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05Pytorch自動求導函數(shù)詳解流程以及與TensorFlow搭建網絡的對比
PyTorch是一個開源的Python機器學習庫,基于Torch,用于自然語言處理等應用程序。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,這篇文章主要介紹了Pytorch自定義自動求導函數(shù),以及PyTorch與TensorFlow搭建網絡的對比2021-11-11flask框架使用orm連接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了flask框架使用orm連接數(shù)據(jù)庫的方法,結合實例形式分析了flask框架使用flask_sqlalchemy包進行mysql數(shù)據(jù)庫連接操作的具體步驟與相關實現(xiàn)技巧,需要的朋友可以參考下2018-07-07python函數(shù)也可以是一個對象,可以存放在列表中并調用方式
這篇文章主要介紹了python函數(shù)也可以是一個對象,可以存放在列表中并調用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02python中關于range()函數(shù)反向遍歷的幾種表達
這篇文章主要介紹了python中關于range()函數(shù)反向遍歷的幾種表達,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05