用Python的Turtle模块绘制五星红旗
来源:互联网 发布:light room2017 mac 编辑:程序博客网 时间:2024/05/18 00:59
用Python的Turtle模块绘制五星红旗
在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 –*-''' 对于turtle类的一些封装方法,包括画正多边形,正多角形和五星红旗。'''__author__ = 'Hu Wenchao'import turtleimport mathdef 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()
效果图
0 0
- 用Python的Turtle模块绘制五星红旗
- 用Python的Turtle库绘制森林
- Python 内置模块turtle模块的使用
- 运用Python的turtle库绘制等边三角形
- 利用Python的turtle库绘制玫瑰
- Python——用turtle模块画海龟的第一步
- python 用turtle库绘制时钟
- nf使用 Python 的 turtle 模块画图
- python中turtle模块的练习
- python中turtle模块的基本命令
- 用Python中的turtle模块绘图
- Python中turtle模块
- turtle模块的安装
- python turtle模块 画火树银花
- Python中turtle模块画图
- Python GUI:高级作图turtle模块的常用函数.md
- python中turtle(海龟)模块的简单用法
- python中turtle模块画没有角的方格
- 几个cd快捷技巧
- 64位win7的adb连不上的解决方法
- Android曝重大漏洞,小分队已掌握其技术细节
- GCD 深入理解(一)
- spring中配置sessionfactory使xml和annotation可以同时使用
- 用Python的Turtle模块绘制五星红旗
- MFC中对CListCtrl的使用总结
- 为什么你应该(从现在开始就)写博客--把这篇文章作为自己开始博客生涯的节点吧
- 最大流的增广路算法比较
- MFC中对,对话框进行分离使用解决方法
- quick-cocos2d-x 加密
- 第十周项目四:大奖赛记分
- ERROR 1598 (HY000): Binary Logging not Possible. Message: Transaction Level READ-COMMITTED in InnoDB
- 安卓安全小分队发现Android新漏洞