用 Python Turtle 绘制罗小黑:用代码呈现可爱与奇幻的萌宠
🐸 前言 🐸
罗小黑,这只来自《罗小黑战记》的萌萌小黑猫,凭借着可爱的外形和灵动的性格,迅速捕获了无数粉丝的心。它不仅是一个独特的卡通角色,还代表了冒险与成长的精神。今天,我们将利用 Python 的 Turtle 模块,绘制出 罗小黑 的可爱形象,展现它那份纯真与奇幻。
🐞往期绘画>>点击进所有绘画🐞
🐋 效果图 🐋
🐉 代码 🐉
#卡通图案!!!罗小黑!!!
#注:把所有的fillcolor,begin_fill,end_fill注释掉,就能得到线条图
import turtle as A
import math as B
A.setup(650,500,700,300)
A.speed(5)
A.penup()
A.goto(-290,120)
A.pendown()
#头部轮廓
A.fillcolor("black")
A.begin_fill()
A.pensize(2)
A.seth(40)
A.circle(-450,80)
A.seth(-90)
A.circle(-150,55)
A.seth(-90)
A.circle(-120,90)
A.fd(20)
A.penup()
A.fd(140)
A.pendown()
A.fd(20)
A.circle(-120,70)
A.seth(156)
A.circle(-170,70)
A.penup()
A.goto(-280,115)
A.end_fill()
#以下值这种值均用于第二重循环时的调整
M=0
X1=1
X2=1
Y1=1
#耳朵(耳朵为两只故二重循环,为了视觉效果,第二重比第一重小)
A.fillcolor("green")
for i in range(2):
A.begin_fill()
if i==1: #如果循环是第二重,则做以下调整
M=1
X1=M*2/3
X2=3/2
Y1=0.87
A.penup()
A.setx(280)
A.seth(M*180+B.pow(-1,M)*20)#以此举例:第一重循环为原值(20)第二重循环为调整值(180-20)即(160),以此调整角度或大小
A.pendown()
A.circle(B.pow(-1,M+1)*150,35*X1)
A.seth(M*180+B.pow(-1,M)*(-105))
A.circle(B.pow(-1,M)*350,24*X1)
A.seth((M*180+B.pow(-1,M)*150)*X2)
A.circle(B.pow(-1,M+1)*170,59*X1*Y1)
A.end_fill()
#眼睛(二重循环,第二重的眼睛(右眼)也比第一重小)
S=-140 #用于眼睛起始的X坐标
Z1=1
A.fillcolor("white")
for i in range(2):
A.begin_fill()
if i==1:
S=60
Z1=0.95
A.penup()
A.setx(S)
A.pendown()
A.seth(90)
A.circle(-70*Z1,180)
A.seth(-75)
A.circle(-150*Z1,30)
A.seth(-90)
A.circle(-70*Z1,180)
A.seth(-75-180)
A.circle(-150*Z1,30)
A.end_fill()
#瞳孔(二重循环,第二重的瞳(左瞳)比第一重大)
T1=113 #瞳孔起始位置x
T2=130 #瞳孔起始位置y
Z2=1
A.fillcolor("black")
for i in range(2):
A.begin_fill()
if i==1:
T1=-85
Z2=1.05
A.penup()
A.goto(T1,T2)
A.pendown()
A.seth(90)
A.circle(-35*Z2,180)
A.seth(-75)
A.circle(-150*Z2,30)
A.seth(-90)
A.circle(-35*Z2,180)
A.seth(-75-180)
A.circle(-150*Z2,30)
A.end_fill()
#身体
M2=0
A.fillcolor("black")
for i in range(2):
A.penup()
A.goto(-90, -120)
A.begin_fill()
if i==1:
M2=1
A.goto(120,-120)
A.seth(M2*180+B.pow(-1,i)*(-110))
A.pendown()
A.circle(B.pow(-1,i)*350,25)
A.end_fill()
#身体补丁
A.fillcolor("black")
A.begin_fill()
A.setx(-110)
A.goto(-90, -120)
A.end_fill()
A.done()