【python】python turtle绘制坤坤打球

一、效果图:035ef861057e4e88a2581f1f0f4ebfa5.gif

二、准备工作

(1)、导入必要的模块:
   代码首先导入了需要使用的模块:requests、lxml和csv。
import requests
from lxml import etree
import csv
    如果出现模块报错

c124a1693bfc457ba1f2909ee9d299fc.png

    进入控制台输入:建议使用国内镜像源
pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

     我大致罗列了以下几种国内镜像源:
清华大学
https://pypi.tuna.tsinghua.edu.cn/simple

阿里云
https://mirrors.aliyun.com/pypi/simple/

豆瓣
https://pypi.douban.com/simple/ 

百度云
https://mirror.baidu.com/pypi/simple/

中科大
https://pypi.mirrors.ustc.edu.cn/simple/

华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/

腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

三、介绍

    通过 Python 的 Turtle 模块,我们可以轻松地在屏幕上绘制各种形状和动画效果。]
    本次项目旨在利用 Turtle 模块创建一个坤坤打篮球的动画效果

四、详解代码

    首先,导入了必要的库:
from turtle import *
from math import *

    这里使用了`turtle`库来进行图形绘制,同时使用`math`库来进行数学计算。

    接下来是定义了两个函数`ty_c`和`ty`,用来绘制填充颜色的椭圆形和不填充颜色的椭圆形。这两个函数主要用到了`cos`和`sin`等三角函数来计算椭圆上的点的位置,以及控制画笔的移动。
1. 函数 ty_c
def ty_c(x, y, sita, a, b, p, q, c):
    fillcolor(c)
    si = 2 * pi / 100
    penup()
    goto(x + a * cos(sita), y + a * sin(sita))
    pendown()
    t = 0
    for i in range(201):
        if i * si + sita <= p:
            penup()
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita), y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
            pendown()
        elif p <= i * si + sita <= q + 2 * pi / 100:
            if t == 0:
                begin_fill()
                t = 1
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita), y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
    end_fill()

  • 这个函数用于绘制填充颜色的椭圆形。
  • 参数说明:
    • xy:椭圆中心点的坐标
    • sita:旋转角度
    • ab:椭圆的长轴和短轴
    • pq:起始角度和结束角度
    • c:填充颜色
  • 主要步骤:
    1. 设置填充颜色并准备绘制
    2. 移动画笔到起始点
    3. 根据角度范围绘制椭圆形
    4. 结束填充
2. 函数 ty
def ty(x, y, sita, a, b, p, q):
    si = 2 * pi / 100
    penup()
    goto(x + a * cos(sita), y + a * sin(sita))
    pendown()
    for i in range(201):
        if i * si + sita < p:
            penup()
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita), y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
            pendown()
        elif p <= i * si + sita <= q + 2 * pi / 100:
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita), y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))

  • 这个函数用于绘制非填充颜色的椭圆形。

  • 参数和步骤与函数 ty_c 类似,不同之处在于这里没有填充颜色的操作。

    然后是主程序部分,主要包括以下绘制过程:
    
  1. 绘制篮球:

    • 首先设置了画笔的粗细和颜色。
    • 调用了ty_cty函数来绘制篮球的图案,包括篮球的表面和阴影等部分。
  2. 绘制人物头像:

    • 设置了画笔的粗细和颜色。
    • 调用了ty_c函数来绘制人物头像的脸部、眼睛、嘴巴、腮红、领口、衣服等元素。
    最后使用`done()`函数来保持图形窗口不关闭。
    
    整体来说,这段代码利用了turtle库中的绘图功能,通过控制画笔的移动和路径来绘制出篮球和人物头像的效果。
    

f3146d7b5c4f48d686b8b8f2ba58ca2d.png

绘制卡通人物

  1. 首先,我们使用ty_c函数绘制了一个篮球的图案,并填充了橙色的颜色。然后使用ty函数绘制了篮球的纹理,使其看起来更加逼真。

  2. 接着,我们使用ty_c函数绘制了一个黄色的脸部图案。然后绘制了两个白色的眼睛,并在眼睛中间分别绘制了黑色的眼珠,使眼睛看起来更加生动。

  3. 紧接着,使用ty_c函数绘制了一个橙色的嘴巴,并绘制了嘴巴的轮廓,使其看起来更加立体。

  4. 接下来,我们使用红色的颜料在脸部两侧绘制了腮红,增加了卡通人物的可爱程度。

  5. 最后,我们绘制了卡通人物的衣服、领口和肩带,使整个图案更加完整。

五、完整代码:

from turtle import *
from math import *
def ty_c(x, y, sita, a, b, p, q, c):
    fillcolor(c)
    si = 2 * pi / 100
    penup()
    goto(x + a * cos(sita), y + a * sin(sita))
    pendown()
    t = 0
    for i in range(201):
        if i * si + sita <= p:
            penup()
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
                 , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
            pendown()
        elif p <= i * si + sita <= q + 2 * pi / 100:
            if t == 0:
                begin_fill()
                t = 1
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
                 , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
    end_fill()
def ty(x, y, sita, a, b, p, q):
    si = 2 * pi / 100
    penup()
    goto(x + a * cos(sita), y + a * sin(sita))
    pendown()
    for i in range(201):
        if i * si + sita < p:
            penup()
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
                 , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))
            pendown()
        elif p <= i * si + sita <= q + 2 * pi / 100:
            goto(x + a * cos(i * si) * cos(sita) - b * sin(i * si) * sin(sita) \
                 , y + a * cos(i * si) * sin(sita) + b * sin(i * si) * cos(sita))


speed(0)

hideturtle()
# 篮球
pensize(10)
pencolor('black')
ty_c(350, -267, 0, 161, 161, 0, 2 * pi, '#ff9900')
ty(350, -267 + 161 + 50, 0, 161, 161, 7 * pi / 6 + pi / 12, 11 * pi / 6 - pi / 12)
ty(350, -267 - 161 - 50, 0, 161, 161, pi / 6 + pi / 12, 5 * pi / 6 - pi / 12)
ty(350, -267 + 161 + 330, 0, 500, 500, 8.5 * pi / 6, 9.5 * pi / 6)
# 脸
pensize(20)
ty_c(0, 0, 0, 657 / 2, 576 / 2, 0, 2 * pi, '#ffcc00')
# 眼睛
pensize(22)
ty_c(55, 52, 0, 106, 104, 0, 2 * pi, 'white')
ty_c(-165, 60, 0, 101, 99, 0, 2 * pi, 'white')
pensize(20)
ty_c(4, 79, 0, 14, 14, 0, 2 * pi, 'black')
ty_c(-201, 80, 0, 14, 14, 0, 2 * pi, 'black')
# 嘴巴
pensize(12)
ty_c(-66, -76, 0, 102, 62, 0, 2 * pi, '#ff6600')
penup()
goto(-155, -50)
pendown()
goto(-134, -64)
goto(-115, -74)
goto(-90, -82)
goto(-67, -86)
goto(-47, -85)
goto(-25, -82)
goto(0, -77)
goto(15, -66)
goto(25, -55)
# 腮红
pensize(1)
pencolor('red')
ty_c(-256, -90, 15 * pi / 180, 49, 66, 0, 2 * pi + 15 * pi / 180, 'red')
ty_c(201, -105, 0, 73, 75, 0, 2 * pi, 'red')
# 领口
color('black', 'black')
pensize(10)
penup()
goto(-275, -227)
pendown()
begin_fill()
goto(-241, -209)
goto(-189, -233)
goto(-166, -260)
goto(-127, -272)
goto(-88, -252)
goto(-49, -233)
goto(-19, -227)
goto(51, -237)
goto(108, -242)
goto(168, -242)
goto(210, -233)
goto(250, -206)
goto(252, -254)
goto(216, -269)
goto(-13, -353)
goto(-65, -362)
goto(-109, -356)
goto(-178, -317)
goto(-214, -296)
goto(-246, -266)
goto(-272, -245)
goto(-275, -227)
end_fill()
# 衣服
penup()
goto(-244, -287)
pendown()
begin_fill()
goto(-269, -314)
goto(-310, -405)
goto(-304, -410)
goto(-21, -416)
goto(317, -410)
goto(331, -398)
goto(323, -381)
goto(319, -356)
goto(315, -320)
goto(275, -266)
goto(263, -257)
pensize(15)
pencolor('#c0c0c0')

goto(252, -254)
goto(216, -269)
goto(-13, -353)
pensize(13)
goto(-65, -362)
goto(-109, -356)
pensize(10)
goto(-178, -317)
goto(-214, -296)
goto(-246, -284)
end_fill()
# 肩带
penup()
goto(-206, -310)
pendown()
pensize(30)
goto(-183, -363)
goto(-180, -384)
goto(-184, -414)

penup()
goto(229, -285)
pendown()
goto(203, -360)
pensize(34)
goto(190, -415)

penup()
goto(-115, -360)
pendown()
pensize(8)
goto(-96, -411)
goto(-75, -413)
goto(18, -371)
goto(69, -341)
goto(105, -325)
pensize(12)
goto(177, -297)
# 中分
pencolor('#808080')
pensize(1)
penup()
goto(67, 393)
pendown()
fillcolor('#808080')
begin_fill()
goto(43, +419)
goto(13, +431)
goto(-96, +426)
goto(-156, +402)
goto(-239, +336)
goto(-277, +300)
goto(-307, +263)
goto(-372, +153)
goto(-383, +101)
goto(-373, +57)
goto(-339, +38)
goto(-298, +40)
goto(-278, +61)
goto(-236, +74)
goto(-176, +103)
goto(-163, +128)
goto(-135, +224)
goto(-95, +265)
goto(-64, +271)
goto(-30, +253)
goto(22, +269)
goto(61, 268)
goto(75, 202)
goto(93, 132)
goto(108, 71)
goto(136, 31)
goto(171, 4)
goto(236, -10)
goto(277, -10)
goto(323, -25)
goto(363, -61)
goto(404, -35)
goto(423, 14)
goto(453, 71)
goto(457, 120)
goto(441, 170)
goto(398, 227)
goto(331, 285)
goto(283, 323)
goto(232, 360)
goto(168, 396)
goto(122, 416)
goto(87, 406)
goto(67, 393)
end_fill()
pencolor('black')
pensize(4)
goto(-30, +253)
done()

总结

    通过使用Python中的Turtle库,我们可以轻松绘制出精美的图案,无论是简单的几何图形还是复杂的卡通人物。
 Turtle库不仅适合初学者学习绘图,也可以用于创作出独特的艺术作品。希望本文对您了解如何使用Turtle库绘制卡
 通人物有所帮助!

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!


如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值