侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python使用Turtle模块绘制五星红旗代码示例

Python  /  管理员 发布于 7年前   337

在Udacity上课时学到了python的turtle方法,这是一个很经典的用来教小孩儿编程的图形模块,最早起源于logo语言。python本身内置了这个模块,其可视化的方法可以帮助小孩儿对编程的一些基本理念有所理解。

在作业提交的论坛里看到很多turtle画出来的精美图形,想不出什么要画的东西,于是决定拿五星红旗来练练手。

前期准备

五星红旗绘制参数

Turtle官方文档

turtle的基本操作

# 初始化屏幕window = turtle.Screen()# 新建turtle对象实例import turtleaTurtle = turtle.Turtle()# 海龟设置aTurtle.hideturtle() # 隐藏箭头aTurtle.speed(10)  # 设置速度# 前进后退,左转右转aTurtle.fd(100)  # 前进100像素aTurtle.right(90) # 右转90°aTurtle.back(100)aTurtle.left(90)# 填充颜色aTurtle.begin_fill()aTurtle.fillcolor('yellow')DoSomethinghere()aTurtle.end_fill()# 抬起笔和放下笔,这样进行的操作不会留下痕迹aTurtle.penup()aTurtle.goto(start_pos)aTurtle.fd(radius)aTurtle.pendown()

绘制五星红旗代码

github地址:https://gist.github.com/dc11287081ee67075da8

#!/usr/bin/env python   # -*- coding: utf-8 C*-''' 对于turtle类的一些封装方法,包括画正多边形,正多角形和五星红旗。'''__author__ = 'Hu Wenchao' import turtleimport math def draw_polygon(aTurtle, size=50, n=3):  ''' 绘制正多边形  args:    aTurtle: turtle对象实例    size: int类型,正多边形的边长    n: int类型,是几边形      '''  for i in xrange(n):    aTurtle.forward(size)    aTurtle.left(360.0/n) def draw_n_angle(aTurtle, size=50, num=5, color=None):  ''' 绘制正n角形,默认为黄色  args:    aTurtle: turtle对象实例    size: int类型,正多角形的边长    n: int类型,是几角形      color: str, 图形颜色,默认不填色  '''  if color:    aTurtle.begin_fill()    aTurtle.fillcolor(color)  for i in xrange(num):    aTurtle.forward(size)    aTurtle.left(360.0/num)    aTurtle.forward(size)    aTurtle.right(2*360.0/num)  if color:    aTurtle.end_fill() def draw_5_angle(aTurtle=None, start_pos=(0,0), end_pos=(0,10), radius=100, color=None):  ''' 根据起始位置、结束位置和外接圆半径画五角星  args:    aTurtle: turtle对象实例    start_pos: int的二元tuple,要画的五角星的外接圆圆心    end_pos: int的二元tuple,圆心指向的位置坐标点    radius: 五角星外接圆半径    color: str, 图形颜色,默认不填色    '''  aTurtle = aTurtle or turtle.Turtle()  size = radius * math.sin(math.pi/5)/math.sin(math.pi*2/5)  aTurtle.left(math.degrees(math.atan2(end_pos[1]-start_pos[1], end_pos[0]-start_pos[0])))  aTurtle.penup()  aTurtle.goto(start_pos)  aTurtle.fd(radius)  aTurtle.pendown()  aTurtle.right(math.degrees(math.pi*9/10))  draw_n_angle(aTurtle, size, 5, color) def draw_5_star_flag(times=20.0):  ''' 绘制五星红旗  args:    times: 五星红旗的规格为30*20, times为倍数,默认大小为10倍, 即300*200  '''  width, height = 30*times, 20*times  # 初始化屏幕和海龟  window = turtle.Screen()  aTurtle = turtle.Turtle()  aTurtle.hideturtle()  aTurtle.speed(10)  # 画红旗  aTurtle.penup()  aTurtle.goto(-width/2, height/2)  aTurtle.pendown()  aTurtle.begin_fill()  aTurtle.fillcolor('red')  aTurtle.fd(width)  aTurtle.right(90)  aTurtle.fd(height)  aTurtle.right(90)  aTurtle.fd(width)  aTurtle.right(90)  aTurtle.fd(height)  aTurtle.right(90)    aTurtle.end_fill()  # 画大星星  draw_5_angle(aTurtle, start_pos=(-10*times, 5*times), end_pos=(-10*times, 8*times), radius=3*times, color='yellow')   # 画四个小星星  stars_start_pos = [(-5, 8), (-3, 6), (-3, 3), (-5, 1)]  for pos in stars_start_pos:    draw_5_angle(aTurtle, start_pos=(pos[0]*times, pos[1]*times), end_pos=(-10*times, 5*times), radius=1*times, color='yellow')   # 点击关闭窗口  window.exitonclick()if __name__ == '__main__':    draw_5_star_flag()

结果:

总结

以上就是本文关于Python使用Turtle模块绘制五星红旗代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


  • 上一条:
    Python文件操作基本流程代码实例
    下一条:
    python中Apriori算法实现讲解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(95个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客