详解Python+Turtle绘制奥运标志的实现

目录
  • 1. 画圆
  • 2. 画奥运标识
  • 3. 重构代码
  • 4. 美化标识
  • 5. 总结

最近了解了Python Turtle,非常简单有趣。为了培养小朋友兴趣,写个turtle画奥运标志程序。

1. 画圆

turtle属于内置包,无需安装。只要导入即可以画图,下面先写几行代码画圆。

import turtle

t = turtle.Pen()
t.circle(50)
t.getscreen()._root.mainloop()

导入turtle之后,创建Pen画笔t,避免后续代码。circle方法是画圆,最后是消息循环,让程序等待可以看到画图结果。

2. 画奥运标识

除了画圆方法,还有几个方法需要了解。

setposition # 设置位置,画布的中心位置是坐标0位置

penup() # 抬起笔,移动时不画。

pendown() # 落笔,开始画

请看下面代码,很容易理解:

import turtle

t = turtle.Pen()
t.circle(50)

t.penup()
t.setposition(-120, 0)
t.pendown()
t.circle(50)

t.penup()
t.setposition(60, 60)
t.pendown()
t.circle(50)

t.penup()
t.setposition(-60, 60)
t.pendown()
t.circle(50)

t.penup()
t.setposition(-180, 60)
t.pendown()
t.circle(50)

t.getscreen()._root.mainloop()

仅通过移动坐标就能达到目的,但这个代码不够精简,需要重构。

3. 重构代码

每次画圆,变化部分只有坐标,这里把坐标和半径抽取为参数,定义drawCircle方法,然后定义每个圆起始坐标并针对每个坐标调用drawCircle方法即可。请看代码:

import turtle

class DrawAoYun(turtle.Turtle):
    """Draw Olympics logo"""

    def __init__(self):
        """DrawAoYun Constructor"""
        turtle.Turtle.__init__(self, shape="turtle")

    def drawCircle(self, x, y, radius=50):
        """
        Moves the turtle to the correct position and draws a circle
        """
        self.penup()
        self.setposition(x, y)
        self.pendown()
        self.circle(radius)

    def drawOlympicSymbol(self):
        """
        Iterates over a set of positions to draw the Olympics logo
        """
        positions = [(0, 0), (-120, 0), (60, 60), (-60, 60), (-180, 60)]
        for pos in positions:
            self.drawCircle(pos[0], pos[1])

if __name__ == "__main__":
    t = DrawAoYun()
    t.drawOlympicSymbol()

    turtle.getscreen()._root.mainloop()

这里定义类,继承turtle.Turtle,构造函数中调用父类__init__进行初始化,并设置画笔为乌龟样式。drawCircle方法定义画圆过程,位置和半径为参数,半径默认为50。drawOlympicSymbol方法先定义5个坐标列表,然后迭代调用drawCircle画圆,即完成了画奥运标识。

4. 美化标识

你可能觉得标识有点单调,没有颜色。我需要加上蓝色、黑色、红色和下面黄色和绿色,也要把画笔加粗点,最后在画上北京2008的文字。

import turtle

class DrawAoYun(turtle.Turtle):
    """Draw Olympics logo"""

    def __init__(self):
        """DrawAoYun Constructor"""
        turtle.Turtle.__init__(self, shape="turtle")
        self.width(5)

    def drawCircle(self, x, y, color,radius=50):
        """
        Moves the turtle to the correct position and draws a circle
        """
        self.penup()
        self.setposition(x, y)
        self.pendown()

        self.color(color)
        self.circle(radius)

    def drawOlympicSymbol(self):
        """
        Iterates over a set of positions to draw the Olympics logo
        """
        positions = [(0, 0, "green"), (-120, 0, "yellow"), (60, 60, "red"), (-60, 60, "black"), (-180, 60, "blue")]
        for x, y, color in positions:
            self.drawCircle(x, y, color)

    def drawText(self):
        """
        Draw text to the screen
        """
        self.penup()
        self.setposition(-120, 180)
        self.pendown()
        self.color("black")
        self.width(1)
        self.write("Beijing 2008", font=("Arial", 16, "bold"))

if __name__ == "__main__":
    t = DrawAoYun()
    t.drawOlympicSymbol()
    t.drawText()

    turtle.getscreen()._root.mainloop()

构造函数中通过width方法设置为5。drawCircle方法增加颜色参数,每次画之前使用self.color(color)设置颜色。drawOlympicSymbol方法中给每个坐标增加颜色元素。

drawText方法通过write方法画文字,其他代码基本一样。

5. 总结

turtle非常简单吧,如果需要更深入了解或想画一些更漂亮、复杂的图形,参考官方文档。

以上就是详解Python+Turtle绘制奥运标志的实现的详细内容,更多关于Python Turtle奥运标志的资料请关注我们其它相关文章!

(0)

相关推荐

  • python使用turtle库绘制奥运五环

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形. 效果图: #奥运五环 import turtle turtle.setup(1.0,1.0) #设置窗口大小 turtle.title("奥运五环") #蓝圆 turtle.penup() turtle.right(90) turtle.forward(-50) tu

  • python图形绘制奥运五环实例讲解

    1. 适当的空格 逻辑行首的空白表示逻辑表示层次关系 从而决定分组 语句从新行的第一列开始 风格统一 都用四个空格 不能随便加空格 奥运五环 #绘制奥运五环 import turtle turtle.width(10) turtle.color("blue") turtle.circle(50) turtle.penup() turtle.goto(120,0) turtle.pendown() turtle.color("black") turtle.circle

  • 用python画个奥运五环(附完整代码)

    完整代码 #绘制奥运五环 import turtle #导入turtle包 turtle.width(15) #定义线条宽度为15 turtle.color("red") turtle.circle(50) turtle.penup() #定义颜色,园半径,抬笔 turtle.goto(120,0) turtle.pendown() #定义线条走向,落笔 turtle.color("green") turtle.circle(50) turtle.penup() t

  • 详解Python+Turtle绘制奥运标志的实现

    目录 1. 画圆 2. 画奥运标识 3. 重构代码 4. 美化标识 5. 总结 最近了解了Python Turtle,非常简单有趣.为了培养小朋友兴趣,写个turtle画奥运标志程序. 1. 画圆 turtle属于内置包,无需安装.只要导入即可以画图,下面先写几行代码画圆. import turtle t = turtle.Pen() t.circle(50) t.getscreen()._root.mainloop() 导入turtle之后,创建Pen画笔t,避免后续代码.circle方法是画

  • 详解Python+Matplotlib绘制面积图&热力图

    目录 1.绘制面积图 2.绘制热力图 1.绘制面积图 面积图常用于描述某指标随时间的变化程度.其面积也通常可以有一定的含义. 绘制面积图使用的是plt.stackplot()方法. 以小学时期学的 常见的追击相遇问题中的速度时间图像为例,下边绘制出一幅简单的v-t图像. 全局字体设为默认的黑体,时间为从第0秒到第10秒,描述的是甲乙两个物体的速度.显然,面积则表示位移. 标题部分字体使用楷体(将系统中的TTF字体文件"STKAITI.TTF"复制到了当前目录下). import mat

  • 详解Python如何利用turtle绘制中国结

    目录 导语 一.中国结 01  平安喜乐 1)效果图 2)附代码 二.中国结 02 心想事成 1)效果图 2)附代码 三.中国结 03 烟火年年 总结 导语 春节是中国特有的传统节日,中国结是中华民族特有的纯粹的文化精髓,富含丰富的文化底蕴,代表着我们对未来,对美好生活的向往和憧憬.新春佳节,小编祝福大家虎年吉祥!万事如意!祝我们的祖国引领世界,勇立潮头!国富民强! 渐渐的,渐渐的,新年很快就要到来.在快过新年时,人们有一个习俗,那就是买“中国结”. 据说,中国结可以让一家人平平安安.幸福,所以

  • Python+Turtle绘制航海王草帽路飞详解

    目录 一.程序运行 1.效果展示-轮廓描绘 2.效果展示-颜色填充 二.实现过程 1.绘图数据下载 2.海龟绘图配置项 3.轮廓绘制 4.颜色填充:衣服.裤子 5.颜色填充:草帽.腰带 6.完整源码 一.程序运行 1.效果展示 - 轮廓描绘 看轮廓描绘效果: 2.效果展示 - 颜色填充 衣服和裤子颜色填充效果: 二.实现过程 1.绘图数据下载 获取地址 内容预览: 2.海龟绘图配置项 降低刷新率可提升绘制速度,值越大刷新频率越低,速度越快 t.tracer(5000) def set_trutl

  • Python+Turtle绘制可爱的小蜜蜂详解

    目录 一.效果展示 二.代码详解 1.导入库 2.播放音乐 3.画小蜜蜂的头 4.画脖子和腹部 三.完整代码 公众号中有个朋友私信我,想要帮忙画下小蜜蜂. 答应了有时间就帮忙画下,趁着五一休息,今天就一起来实现一下吧. 一.效果展示 在正式进入代码讲解之前,先来看下本文的实现效果. 感兴趣的朋友可以根据自己的需要调整函数,绘制别的形状的小蜜蜂. 二.代码详解 本小节会详细解锁如何通过Python中的turtle库绘制小蜜蜂. 1.导入库 首先导入本文需要加载的库,如果你有些库还没有安装,导致运行

  • 详解Python+Pyecharts实现漏斗图的绘制

    目录 任务描述 相关知识 编程要求 测试说明 代码 任务描述 本关任务:利用 PyEcharts 绘制一个基本的漏斗图. 相关知识 为了完成本关任务,你需要掌握: 1. Python 的基本语法 2. PyEcharts 漏斗图的相关内容 导入图表类型 与日历图的操作类似,在文件的开始我们首先要将所需包导入,如右侧编辑器中代码所示. 导入漏斗图的语句为 from pyecharts.charts import Funnel 为了方便构造数据,我们还导入了 PyEcharts 提供的虚拟数据包,如

  • 详解Python 3D引擎Ursina如何绘制立体图形

    目录 编写第一个程序 绘制实体长方体 对实体进行同样比例的放大和缩小 对实体进行任意放大 绘制球体 为你的实体上色 Python有一个不错的3D引擎——Ursina Ursina官网:www.ursinaengine.org 打开cmd,控制台输入pip install ursina以安装ursina 编写第一个程序 首先导入ursina from ursina import * 然后创建app app=Ursina() 运行app app.run() 最终代码: from ursina imp

  • Python+Turtle绘制可爱的可达鸭

    目录 一.效果展示 二.代码详解 1.导入库 2.播放音乐 3.画可达鸭的头和身体外轮廓 4.画眼睛 5.画手 6.画嘴和脚 7.画头发 8.写文字 一年一度的六一儿童节又来了,祝大朋友小朋友节日快乐. 你有没有一瞬间,特别想要回到童年? 童年是一盒水彩笔,五颜六色精彩纷呈.童年是一幅漫画,新奇幻想思绪缤纷.童年是用水彩笔绘出的一幅漫画,一个追风的少年. 童年的时光总是安静又美好,我们总是盼望着长大,憧憬着未来的生活. 长大后,我们又总是在怀念,怀念过去简单又纯粹的自己. 本文主要介绍运用tur

  • Python+Turtle绘制幸运草的示例代码

    目录 一.效果展示 二.代码详解 1.导入库 2.播放音乐 3.定义画四叶草的函数 4.调用函数绘制四叶草 5.设置写文字的函数 幸运草又名四叶草,一般指四叶的苜蓿.或车轴草. 在十万株苜蓿草中,你可能只会发现一株是四叶草,机会率大约是十万分之一. 因此四叶草是国际公认的幸运象征. 本文主要介绍运用turtle库控制函数绘制四叶草,希望见者皆好运,祝福大家的生活都能幸福安康. 一.效果展示 在介绍代码之前,先来看下本文的实现效果. 可以把视频中的名字替换成你所想的名字,并参考下面步骤把Pytho

  • Python+Turtle绘制蜘蛛侠的示例代码

    目录 一.效果展示 二.代码详解 1.导入库 2.播放音乐 3.定义画蜘蛛侠上半身的函数 4.定义画左手和右手的函数 5.定义画蜘蛛的函数 6.调用函数绘制图形 蜘蛛侠(Spider-Man)即彼得·帕克(Peter Parker),是美国漫威漫画旗下超级英雄. 由编剧斯坦·李和画家史蒂夫·迪特科联合创造,初次登场于<惊奇幻想>(Amazing Fantasy)第15期(1962年8月). 因为广受欢迎,几个月后,便开始拥有以自己为主角的单行本漫画. 网易云中关于蜘蛛侠主题曲热评过万的评论说到

随机推荐