用Python代码画一个足球(附完整代码)

C站举办了世界杯征文活动,本文用Python代码画一个足球。

实现方法介绍

本文的绘图工具使用Python的标准库turtle库,无需安装,导入即可使用。

部分函数用法介绍:

画布设置

  • title(): 设置窗口的标题。
  • bgpic():设置背景图片。
  • setup(width, height, x, y): 设置窗口大小和窗口左上角在屏幕中的位置。
  • shape():设置鼠标的形状。
  • done(): 绘图结束后,不自动关闭窗口。

画笔设置

  • pencolor(color): 设置画笔颜色。
  • width(): 设置画笔宽度。
  • speed(int): 设置画笔的速度,传入1~10的数字,1最慢,10最快。传入其他值会更快,但是没有鼠标移动的动画效果。
  • penup(): 提起画笔,提起后移动画笔不会留下痕迹。
  • pendown(): 落下画笔,开始绘图前先将画笔落下。
  • setx(value): 设置画笔的x轴坐标。
  • sety(value): 设置画笔的y轴坐标。
  • towards(x, y): 设置画笔指向的点。
  • setheading(): 设置画笔的方向。与towards()配合可以设置画笔指向某个点,如setheading(towards(0, 0))可以设置画笔指向原点。
  • pos(): 返回画笔当前的坐标。鼠标移动一段时间后可以print()打印此函数获取鼠标位置。
  • heading(): 返回画笔当前的方向。

画笔操作

  • circle(radius[, extent=arc]): 画一个圆,传入圆的半径,根据画笔的方向控制圆心的位置,圆心与画笔的方向垂直。传入弧度值可以画出指定弧度的圆弧。
  • left(angle): 画笔左转,传入任意一个目标角度。
  • right(angle): 画笔右转。
  • forward(distance): 画笔前进一段距离。
  • backward(distance): 画笔后退一段距离。
  • goto(x, y): 移动画笔到指定坐标。

颜色填充

  • begin_fill(): 开始填充。
  • fillcolor(color): 设置图形中填充的颜色。
  • end_fill(): 结束填充。

具体画图时,调整画笔的起点,设置不同的转角度数和不同的前进长度,可以得到不同形状的弧线,用弧线构成完整的图形。

完整代码

# coding=utf-8
from turtle import *def set_start(x, y, w=0.5, c='black'):# 设置画笔开始的位置,绘制每一个部分的图形时,将鼠标移到起始点penup()  # 提起画笔setx(x)  # 设置画笔的x坐标sety(y)  # 设置画笔的y坐标setheading(towards(0, 0))  # 默认设置画笔指向坐标原点0,0width(w)  # 设置画笔的宽度pencolor(c)  # 设置画笔的颜色pendown()  # 落下画笔,开始绘图speed(0)  # 设置画笔的速度,1-9依次越来越快,其他数字比9更快def left_rotate(time, angle, length):# 绘制向左转的弧度,左转一定角度然后前进一段距离,重复多次就得到一个弧度for i in range(time):  # 重复次数left(angle)  # 左转的角度forward(length)  # 前进距离def right_rotate(time, angle, length):# 绘制向右转的弧度,右转一定角度然后前进一段距离,重复多次就得到一个弧度for i in range(time):  # 重复次数right(angle)  # 右转的角度forward(length)  # 前进距离def fill_color_patch(x, y, c='white'):# 填充颜色时会找上一个图形的介绍点,此函数重置结束点,避免填充效果不准set_start(x, y, 1, c=c)forward(1)def draw_football():# 足球fill_color_patch(39.34, -90.63)begin_fill()set_start(39.34, -90.63, w=2, c='black')setheading(124.2)left_rotate(20, 18, 12.2)goto(39.34, -90.63)fillcolor('#DCDCDC')end_fill()fill_color_patch(-25, -110)begin_fill()set_start(-25, -110, w=1, c='white')right_rotate(1, 160, 10)left_rotate(5, 20, 12)left_rotate(4, 18, 12)pencolor('black')left_rotate(1, 35, 12)left_rotate(7, 18, 12.1)goto(-25, -110)fillcolor('white')end_fill()fill_color_patch(-25, -108)begin_fill()set_start(-25, -108, w=1, c='black')right_rotate(1, 20, 4)right_rotate(2, 10, 3)left_rotate(1, 35, 5)left_rotate(1, 165, 5)right_rotate(2, 15, 3)goto(-25, -108)fillcolor('black')end_fill()fill_color_patch(-16, -101)begin_fill()set_start(-16, -101, w=1, c='black')right_rotate(1, 35, 8)right_rotate(1, 140, 4)left_rotate(2, 21, 2)left_rotate(2, 8, 4.5)right_rotate(1, 105, 8)right_rotate(1, 120, 3)left_rotate(3, 15, 4)goto(-16, -101)fillcolor('black')end_fill()fill_color_patch(-10, -93)begin_fill()set_start(-10, -93, w=1, c='black')left_rotate(1, 90, 4)right_rotate(1, 135, 5)right_rotate(2, 3, 7)right_rotate(1, 60, 3)right_rotate(1, 135, 5)left_rotate(3, 10, 4)goto(-10, -93)fillcolor('black')end_fill()fill_color_patch(6, -82)begin_fill()set_start(6, -82, w=1, c='black')right_rotate(1, 50, 4)right_rotate(1, 60, 6)right_rotate(2, 3, 7)right_rotate(1, 130, 4)right_rotate(1, 60, 5)left_rotate(3, 8, 4)goto(6, -82)fillcolor('black')end_fill()fill_color_patch(30, -88)begin_fill()set_start(30, -88, w=1, c='black')right_rotate(1, 130, 5)right_rotate(1, 15, 5)right_rotate(1, 150, 5)goto(30, -88)fillcolor('black')end_fill()fill_color_patch(25, -89)begin_fill()set_start(25, -89, w=1, c='black')right_rotate(1, 140, 8)right_rotate(1, 95, 4)left_rotate(2, 25, 6)right_rotate(1, 130, 8)right_rotate(1, 110, 3)left_rotate(3, 20, 4)goto(25, -89)fillcolor('black')end_fill()fill_color_patch(20, -106)begin_fill()set_start(20, -106, w=1, c='black')right_rotate(1, 180, 8)right_rotate(1, 120, 4)left_rotate(3, 18, 5.8)right_rotate(1, 120, 8)right_rotate(1, 110, 3)left_rotate(3, 14, 5)goto(20, -106)fillcolor('black')end_fill()fill_color_patch(-8, -117)begin_fill()set_start(-8, -117, w=1, c='black')right_rotate(1, 100, 8)right_rotate(1, 115, 4)left_rotate(2, 16, 5)left_rotate(1, 22, 6)right_rotate(1, 125, 8)right_rotate(1, 120, 3)left_rotate(1, 25, 4)left_rotate(3, 15, 4)goto(-8, -117)fillcolor('black')end_fill()fill_color_patch(-12, -137)begin_fill()set_start(-12, -137, w=1, c='black')right_rotate(1, 145, 8)right_rotate(1, 148, 4)left_rotate(2, 18, 3.2)right_rotate(1, 55, 7)right_rotate(1, 165, 3)left_rotate(3, 20, 3)goto(-12, -137)fillcolor('black')end_fill()fill_color_patch(-6, -144)begin_fill()set_start(-6, -144, w=1, c='black')right_rotate(1, 35, 6)right_rotate(1, 105, 4)left_rotate(3, 16, 5.5)right_rotate(1, 130, 5)right_rotate(1, 78, 3)left_rotate(3, 5, 4)goto(-6, -144)fillcolor('black')end_fill()fill_color_patch(23, -115)begin_fill()set_start(23, -115, w=1, c='black')right_rotate(1, 60, 8)right_rotate(1, 120, 4)left_rotate(3, 12, 5.3)right_rotate(1, 100, 8)right_rotate(1, 130, 3)left_rotate(3, 15, 5)goto(23, -115)fillcolor('black')end_fill()fill_color_patch(32, -133)begin_fill()set_start(32, -133, w=1, c='black')right_rotate(1, 140, 6)right_rotate(1, 110, 4)left_rotate(3, 8, 5)right_rotate(1, 80, 7)right_rotate(1, 140, 3)left_rotate(3, 14, 6)goto(32, -133)fillcolor('black')end_fill()fill_color_patch(39, -135)begin_fill()set_start(39, -135, w=1, c='black')right_rotate(1, 30, 7)right_rotate(1, 80, 3)left_rotate(3, 20, 2.2)right_rotate(1, 160, 5)right_rotate(1, 60, 3)left_rotate(2, 15, 3)goto(39, -135)fillcolor('black')end_fill()fill_color_patch(14, -153)begin_fill()set_start(14, -153, w=1, c='black')right_rotate(1, 90, 7)right_rotate(1, 130, 3.5)right_rotate(1, 60, 3)goto(14, -153)fillcolor('black')end_fill()if __name__ == '__main__':title('足球(公众号:小斌哥ge)')wide = 600height = 500screensize(wide, height, 'green')setup(wide+30, height+30, 100, 50)draw_football()set_start(1000, 1000, 1)done()

运行结果

运行以上代码,即可以画出一个在绿茵场上的足球。

如果需要吉祥物和足球一起的代码,可以在文章下方关注我,获取更多代码。

相关阅读

用Python标准库turtle画一只老虎,祝您新年虎虎生威,大吉大利!

用Python代码画一个足球(附完整代码)相关推荐

  1. 基于pytorch搭建多特征CNN-LSTM时间序列预测代码详细解读(附完整代码)

    系列文章目录 lstm系列文章目录 1.基于pytorch搭建多特征LSTM时间序列预测代码详细解读(附完整代码) 2.基于pytorch搭建多特征CNN-LSTM时间序列预测代码详细解读(附完整代码 ...

  2. python调用第三方接口获取数据_python调用接口,python接收post请求接口(附完整代码)...

    与Scala语言相比,Python有其独特的优势和广泛的应用,python调用接口,因此Spark也推出了PySpark,它在框架上提供了一个使用Python语言的接口,python接收post请求接 ...

  3. Python模拟京东登录(附完整代码)

    来源:IMyxuan 链接:https://segmentfault.com/a/1190000011978866 分析登录的网络请求 打开https://passport.jd.com/new/lo ...

  4. Python:制作一个模拟扔硬币的程序(附完整代码)

    Python:制作一个模拟扔硬币的程序(附完整代码) 在这个项目中,我们将编写一个Python程序来模拟扔硬币的方式.我们会使用Python内置的随机模块,实现随机出现正面或反面的效果. 首先,我们需 ...

  5. Python数据可视化:2018年北上广深空气质量分析(附完整代码)

    ♚ 法纳斯特,Python爱好者,喜欢爬虫,数据分析以及可视化. 就在这周偶然看到一个学弟吐槽天津的空气,不禁想起那段厚德载雾,自强不吸的日子. 无图无真相,下图为证. 左边的图是去年2月份的时候,这 ...

  6. python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)

    引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...

  7. 吴恩达机器学习python实现(6):SVM支持向量机(文末附完整代码)

    所有的数据来源:链接:https://pan.baidu.com/s/1vTaw1n77xPPfKk23KEKARA 提取码:5gl2 1 Support Vector Machines 1.1 Pr ...

  8. Python实现自动翻译功能 - 附完整代码

    Python实现自动翻译功能 - 附完整代码 随着全球化的不断深入,越来越多的人需要跨越语言障碍进行交流.机器翻译技术的出现为这一问题提供了有效的解决方案.今天,我们将通过Python实现一个自动翻译 ...

  9. python月亮_如何用python代码画一个月亮

    如何用python代码画一个月亮 发布时间:2020-06-17 15:52:21 来源:亿速云 阅读:181 作者:元一 Python简介 Python是一种跨平台的计算机程序设计语言. 是一个高层 ...

最新文章

  1. 微信小程序图片上传到服务器再自动替换,微信小程序批量上传图片到服务器,并实现预览,删除功能...
  2. kill 进程_如何查杀stopped进程
  3. java 操作vss,java开发常用工具总结,java开发常用工具
  4. 1进程 ppid_Python每日3题什么是僵尸进程和孤儿进程?
  5. Atitit uri url urn 的概念区别 与联系 目录 1.1. 概念图 uri包括url和urn。。Urn一般是相对路径。。。 1 1.2. 统一资源名称 (Uniform Resourc
  6. vc2012 异常捕获并处理
  7. vue 获取指定key的value_深入浅出 Vue 中的 key 值
  8. 如何获取a股level2数据接口?
  9. 前端笔记:飞机航线图
  10. 学大数据可以从事什么工作?前景如何?
  11. 代码批量删除QQ日志和说说
  12. SPADE(GauGAN)代码运行方法
  13. 东文财、赵栋《面向对象程序设计(java)》第十一周学习总结
  14. 手机号码转码_中文域名转码,中文域名PunyCode编码转换,中文域名在线转码工具,Punycode编码在线转换工具...
  15. php 请求url并且获取返回值
  16. DDD 实战 (5):限界上下文映射和系统分层架构
  17. leaflet鼠标进出事件 mouseover和mouseout (示例代码009)
  18. 【CCF】NOI2006试题下载
  19. 二、八、十、十六进制介绍及进制转换
  20. GAN学习指南(通俗易懂):从原理入门到制作生成Demo

热门文章

  1. Vmware WorkStation的三种联网方式
  2. AAA认证 - 3A认证
  3. 01-初识 pygame 游戏开发
  4. vue.js毕业设计,基于vue.js前后端分离在线教育视频点播小程序系统设计与实现
  5. python正则表达式(\S+)和 \d+的含义
  6. 在磨金石教育学室内设计靠谱吗?学费贵吗?老师负责吗?
  7. javaweb编辑器ckeditor配置_ckeditor (一)在java web中的配置
  8. 神笔马良——基于 OpenGL 的涂鸦框架
  9. 软件项目管理学习(二)
  10. idea出现Can not set int field xxx to java.lang.Float 错误