(點選上方快速關註並設定為星標,一起學Python)
今天就是六一兒童節了,先祝願大家節日快樂。
《哆啦A夢:大熊的月球探險家》在兒童節上映,相信有孩子的程式猿已經陪伴孩子去遊玩看電影了,那麼沒有孩子的程式猿可以用什麼獨特的方式度過六一兒童節呢?
那就用Python來學習畫一個多啦A夢吧。
先看效果圖:
這就是用Python繪製多啦A夢的效果圖,是不是很有趣?
是透過什麼技術實現的呢?這是使用Python的turtle繪圖,即海龜繪圖來實現的。在海龜作圖中,我們可以編寫指令讓一個虛擬的(想象中的)海龜在螢幕上來回移動。這個海龜帶著一隻鋼筆,我們可以讓海龜無論移動到哪都使用這隻鋼筆來繪製線條。透過編寫程式碼,以各種很酷的樣式移動海龜,我們可以繪製出令人驚奇的圖片。
使用海龜繪圖還能繪製小豬佩奇、皮卡丘等圖,效果圖如下:
小豬佩奇
皮卡丘
有沒有想嘗試一把?
講了這麼多了,上多啦A夢程式碼(因篇幅關係,只給出了多啦A夢頭部的程式碼,完整程式碼及小豬佩奇和皮卡丘程式碼獲取方式見文末):
程式碼來源:
https://github.com/PerpetualSmile/Python-Painting-Doraemon
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author: dong
# @Date: 2018-07-05 19:37:42
# @Env: python 3.6
# @Github: https://github.com/PerpetualSmile
from turtle import *
# 無軌跡跳躍
def my_goto(x, y):
penup()
goto(x, y)
pendown()
# 眼睛
def eyes():
fillcolor("#ffffff")
begin_fill()
tracer(False)
a = 2.5
for i in range(120):
if 0 <= i < 30 or 60 <= i < 90:
a -= 0.05
lt(3)
fd(a)
else:
a += 0.05
lt(3)
fd(a)
tracer(True)
end_fill()
# 鬍鬚
def beard():
my_goto(-32, 135)
seth(165)
fd(60)
my_goto(-32, 125)
seth(180)
fd(60)
my_goto(-32, 115)
seth(193)
fd(60)
my_goto(37, 135)
seth(15)
fd(60)
my_goto(37, 125)
seth(0)
fd(60)
my_goto(37, 115)
seth(-13)
fd(60)
# 嘴巴
def mouth():
my_goto(5, 148)
seth(270)
fd(100)
seth(0)
circle(120, 50)
seth(230)
circle(-120, 100)
# 圍巾
def scarf():
fillcolor('#e70010')
begin_fill()
seth(0)
fd(200)
circle(-5, 90)
fd(10)
circle(-5, 90)
fd(207)
circle(-5, 90)
fd(10)
circle(-5, 90)
end_fill()
# 鼻子
def nose():
my_goto(-10, 158)
seth(315)
fillcolor('#e70010')
begin_fill()
circle(20)
end_fill()
# 黑眼睛
def black_eyes():
seth(0)
my_goto(-20, 195)
fillcolor('#000000')
begin_fill()
circle(13)
end_fill()
pensize(6)
my_goto(20, 205)
seth(75)
circle(-10, 150)
pensize(3)
my_goto(-17, 200)
seth(0)
fillcolor('#ffffff')
begin_fill()
circle(5)
end_fill()
my_goto(0, 0)
# 臉
def face():
fd(183)
lt(45)
fillcolor('#ffffff')
begin_fill()
circle(120, 100)
seth(180)
# print(pos())
fd(121)
pendown()
seth(215)
circle(120, 100)
end_fill()
my_goto(63.56,218.24)
seth(90)
eyes()
seth(180)
penup()
fd(60)
pendown()
seth(90)
eyes()
penup()
seth(180)
fd(64)
# 頭型
def head():
penup()
circle(150, 40)
pendown()
fillcolor('#00a0de')
begin_fill()
circle(150, 280)
end_fill()
# 畫哆啦A夢
def Doraemon():
# 頭部
head()
# 圍脖
scarf()
# 臉
face()
# 紅鼻子
nose()
# 嘴巴
mouth()
# 鬍鬚
beard()
# 畫眼睛
black_eyes()
if __name__ == '__main__':
screensize(800,600, "#f0f0f0")
pensize(3) # 畫筆寬度
speed(9) # 畫筆速度
Doraemon()
my_goto(100, -300)
write('by dongdong', font=("Bradley Hand ITC", 30, "bold"))
mainloop()
朋友會在“發現-看一看”看到你“在看”的內容