【Python】用Python画小猪佩奇,落叶树和动漫人物

 

【Python】用Python画小猪佩奇,落叶树和动漫人物_第1张图片

 

本文目录:小猪佩奇-落叶树-魔法少女

本文作者:小赖同学

 

最近在浏览Python文章时,无意中发现了一个好玩的画图工具turtle,看到各路大神竟然用Python画了一个图片出来,无法用言语来形容心中感概,只能重复默念“卧槽卧槽厉害”。为了丰富大家的娱乐时间,我进行了汇总,整理出三个比较好看的给大家消磨时间。

 

小猪佩奇

效果图:

 

 

代码:

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2020/3/13 20:00
# @Author  : Lucas Lai
# @IDE: PyCharm
import turtle as tt
​
def nose():
    # 鼻子
    tt.pu()
    tt.goto(-100, 100)
    tt.pd()
    tt.seth(-30)
    tt.begin_fill()
    a = 0.4
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a = a + 0.08
            tt.lt(3)  # 向左转3度
            tt.fd(a)  # 向前走a的步长
        else:
            a = a - 0.08
            tt.lt(3)
            tt.fd(a)
            tt.end_fill()
    tt.pu()
    tt.seth(90)
    tt.fd(25)
    tt.seth(0)
    tt.fd(10)
    tt.pd()
    tt.pencolor(255, 155, 192)
    tt.seth(10)
    tt.begin_fill()
    tt.circle(5)
    tt.color(160, 82, 45)
    tt.end_fill()
​
    tt.pu()
    tt.seth(0)
    tt.fd(20)
    tt.pd()
    tt.pencolor(255, 155, 192)
    tt.seth(10)
    tt.begin_fill()
    tt.circle(5)
    tt.color(160, 82, 45)
    tt.end_fill()
​
def head():
    # 头
    tt.color((255, 155, 192), "pink")
    tt.pu()
    tt.seth(90)
    tt.fd(41)
    tt.seth(0)
    tt.fd(0)
    tt.pd()
    tt.begin_fill()
    tt.seth(180)
    tt.circle(300, -30)
    tt.circle(100, -60)
    tt.circle(80, -100)
    tt.circle(150, -20)
    tt.circle(60, -95)
    tt.seth(161)
    tt.circle(-300, 15)
    tt.pu()
    tt.goto(-100, 100)
    tt.pd()
    tt.seth(-30)
    a = 0.4
    for i in range(60):
        if 0 <= i < 30 or 60 <= i < 90:
            a = a + 0.08
            tt.lt(3)  # 向左转3度
            tt.fd(a)  # 向前走a的步长
        else:
            a = a - 0.08
            tt.lt(3)
            tt.fd(a)
            tt.end_fill()
​
def ear():
    # 耳朵
    tt.color((255, 155, 192), "pink")
    tt.pu()
    tt.seth(90)
    tt.fd(-7)
    tt.seth(0)
    tt.fd(70)
    tt.pd()
    tt.begin_fill()
    tt.seth(100)
    tt.circle(-50, 50)
    tt.circle(-10, 120)
    tt.circle(-50, 54)
    tt.end_fill()
​
    tt.pu()
    tt.seth(90)
    tt.fd(-12)
    tt.seth(0)
    tt.fd(30)
    tt.pd()
    tt.begin_fill()
    tt.seth(100)
    tt.circle(-50, 50)
    tt.circle(-10, 120)
    tt.circle(-50, 56)
    tt.end_fill()
​
def eyes():
    # 眼睛
    tt.color((255, 155, 192), "white")
    tt.pu()
    tt.seth(90)
    tt.fd(-20)
    tt.seth(0)
    tt.fd(-95)
    tt.pd()
    tt.begin_fill()
    tt.circle(15)
    tt.end_fill()
​
    tt.color("black")
    tt.pu()
    tt.seth(90)
    tt.fd(12)
    tt.seth(0)
    tt.fd(-3)
    tt.pd()
    tt.begin_fill()
    tt.circle(3)
    tt.end_fill()
​
    tt.color((255, 155, 192), "white")
    tt.pu()
    tt.seth(90)
    tt.fd(-25)
    tt.seth(0)
    tt.fd(40)
    tt.pd()
    tt.begin_fill()
    tt.circle(15)
    tt.end_fill()
​
    tt.color("black")
    tt.pu()
    tt.seth(90)
    tt.fd(12)
    tt.seth(0)
    tt.fd(-3)
    tt.pd()
    tt.begin_fill()
    tt.circle(3)
    tt.end_fill()
    
def gill():
    # 腮
    tt.color((255, 155, 192))
    tt.pu()
    tt.seth(90)
    tt.fd(-95)
    tt.seth(0)
    tt.fd(65)
    tt.pd()
    tt.begin_fill()
    tt.circle(30)
    tt.end_fill()
​
def mouth():
    # 嘴
    tt.color(239, 69, 19)
    tt.pu()
    tt.seth(90)
    tt.fd(15)
    tt.seth(0)
    tt.fd(-100)
    tt.pd()
    tt.seth(-80)
    tt.circle(30, 40)
    tt.circle(40, 80)
​
def body():
    # 身体
    tt.color("red", (255, 99, 71))
    tt.pu()
    tt.seth(90)
    tt.fd(-20)
    tt.seth(0)
    tt.fd(-78)
    tt.pd()
    tt.begin_fill()
    tt.seth(-130)
    tt.circle(100, 10)
    tt.circle(300, 30)
    tt.seth(0)
    tt.fd(230)
    tt.seth(90)
    tt.circle(300, 30)
    tt.circle(100, 3)
    tt.color((255, 155, 192), (255, 100, 100))
    tt.seth(-135)
    tt.circle(-80, 63)
    tt.circle(-150, 24)
    tt.end_fill()
​
def hand():
    # 手
    tt.color((255, 155, 192))
    tt.pu()
    tt.seth(90)
    tt.fd(-40)
    tt.seth(0)
    tt.fd(-27)
    tt.pd()
    tt.seth(-160)
    tt.circle(300, 15)
    tt.pu()
    tt.seth(90)
    tt.fd(15)
    tt.seth(0)
    tt.fd(0)
    tt.pd()
    tt.seth(-10)
    tt.circle(-20, 90)
​
    tt.pu()
    tt.seth(90)
    tt.fd(30)
    tt.seth(0)
    tt.fd(237)
    tt.pd()
    tt.seth(-20)
    tt.circle(-300, 15)
    tt.pu()
    tt.seth(90)
    tt.fd(20)
    tt.seth(0)
    tt.fd(0)
    tt.pd()
    tt.seth(-170)
    tt.circle(20, 90)
​
def foot():
    # 脚
    tt.pensize(10)
    tt.color((240, 128, 128))
    tt.pu()
    tt.seth(90)
    tt.fd(-75)
    tt.seth(0)
    tt.fd(-180)
    tt.pd()
    tt.seth(-90)
    tt.fd(40)
    tt.seth(-180)
    tt.color("black")
    tt.pensize(15)
    tt.fd(20)
​
    tt.pensize(10)
    tt.color((240, 128, 128))
    tt.pu()
    tt.seth(90)
    tt.fd(40)
    tt.seth(0)
    tt.fd(90)
    tt.pd()
    tt.seth(-90)
    tt.fd(40)
    tt.seth(-180)
    tt.color("black")
    tt.pensize(15)
    tt.fd(20)
​
def tail():
    # 尾巴
    tt.pensize(4)
    tt.color((255, 155, 192))
    tt.pu()
    tt.seth(90)
    tt.fd(70)
    tt.seth(0)
    tt.fd(95)
    tt.pd()
    tt.seth(0)
    tt.circle(70, 20)
    tt.circle(10, 330)
    tt.circle(70, 30)
    tt.done()
​
def init():
    tt.pensize(4)
    tt.hideturtle()
    tt.colormode(255)
    tt.color((255, 155, 192), "pink")
    tt.setup(840, 500)
    tt.speed(10)
​
def main():
    init()
    nose()
    head()
    ear()
    eyes()
    gill()
    mouth()
    body()
    hand()
    foot()
    tail()
​
if __name__ == '__main__':
    main()

 

落叶树

效果图:

【Python】用Python画小猪佩奇,落叶树和动漫人物_第2张图片

 

代码:

# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2020/3/13 20:31
# @Author  : Lucas Lai
# @IDE: PyCharm
import turtle as tt
from random import *
from math import *
​
def tree(n, l):
    tt.pd()  # 下笔
    # 阴影效果
    t = cos(radians(tt.heading() + 45)) / 8 + 0.25
    tt.pencolor(t, t, t)
    tt.pensize(n / 3)
    tt.forward(l)  # 画树枝
​
    if n > 0:
        b = random() * 15 + 10  # 右分支偏转角度
        c = random() * 15 + 10  # 左分支偏转角度
        d = l * (random() * 0.25 + 0.7)  # 下一个分支的长度
        # 右转一定角度,画右分支
        tt.right(b)
        tree(n - 1, d)
        # 左转一定角度,画左分支
        tt.left(b + c)
        tree(n - 1, d)
        # 转回来
        tt.right(c)
    else:
        # 画叶子
        tt.right(90)
        n = cos(radians(tt.heading() - 45)) / 4 + 0.5
        tt.pencolor(n, n * 0.8, n * 0.8)
        tt.circle(3)
        tt.left(90)
        # 添加0.3倍的飘落叶子
        if random() > 0.7:
            tt.pu()
            # 飘落
            t = tt.heading()
            an = -40 + random() * 40
            tt.setheading(an)
            dis = int(800 * random() * 0.5 + 400 * random() * 0.3 + 200 * random() * 0.2)
            tt.forward(dis)
            tt.setheading(t)
            # 画叶子
            tt.pd()
            tt.right(90)
            n = cos(radians(tt.heading() - 45)) / 4 + 0.5
            tt.pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)
            tt.circle(2)
            tt.left(90)
            tt.pu()
            # 返回
            t = tt.heading()
            tt.setheading(an)
            tt.backward(dis)
            tt.setheading(t)
    tt.pu()
    tt.backward(l)  # 退回
​
def init():
    tt.bgcolor(0.5, 0.5, 0.5)  # 背景色
    tt.hideturtle()  # 隐藏turtle
    tt.speed(10)  # 速度 1-10渐进,0 最快
    tt.tracer(0, 0)
    tt.pu()  # 抬笔
    tt.backward(100)
    tt.left(90)  # 左转90度
    tt.pu()  # 抬笔
    tt.backward(300)  # 后退300
    tree(12, 100)  # 递归7层
    tt.done()
​
def main():
    init()
​
if __name__ == '__main__':
    main()

 

魔法少女

因篇幅有限,代码太多了,这个就不放代码了,可在微信公众号“学渣同学”后台回复“魔法少女”发你源码链接,直接上最终效果图:

【Python】用Python画小猪佩奇,落叶树和动漫人物_第3张图片

 

推荐阅读

【Python】我用python爬取一月份微博热搜数据来分析人们对新型肺炎的关注程度变化

无聊的周末,我写了个证件照换底色神器,一秒就“变色”

 

如有问题,可联系我

【Python】用Python画小猪佩奇,落叶树和动漫人物_第4张图片

你可能感兴趣的:(Python)