python 用turtle模块画一个中国结!附代码、注释
turtle模块是基于tkinter的模块,实现(主要画图)许多功能,这里,我们就用turtle画一个中国结吧!
介绍:
使用:turtle(画);math.sqrt(辅助)
一、导入
import turtle as t#导入turtle 老规矩,as t
from math import sqrt#导入平方根
二、中国结
class chineseKnot:#中国结'''中国结'''
三、‘初始化’函数
def __init__(self) -> None:# 画笔初始化self.t = tself.t.title("中国结")#标题self.t.pensize(10)#笔粗self.t.setup(700, 700)#界面大小self.t.pencolor("red")#画笔颜色self.t.speed('fastest')#速度# 结心坐标self.x = 0self.y = 200
四、画
(所用的函数均在下文定义)
def drawKnot(self) -> None:self.drawBody()self.drawEdge()self.drawAdorn()self.t.hideturtle()#隐藏画笔self.t.done()#完成
(1)、画(步骤一)
def drawBody(self) -> None:for i in range(11):#循环self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-45)self.t.fd(200)self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-135)self.t.fd(200)
(2)、画(步骤二)
def drawEdge(self) -> None:for i in range(4):# 左上角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(135)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 右上角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(45)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 左下角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-135)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 右下角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-45)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 左侧self.t.seth(-45)self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(20, 270)self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(-20, 270)# 右侧self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(40, 270)self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(-40, 270)def drawAdorn(self):# 上侧self.__goto(self.x, self.y)self.t.pensize(14)self.t.seth(90)self.t.fd(60)self.__goto(0, 320)self.t.seth(180)self.t.circle(30, 360)# 下侧self.__goto(0, 200 - 200 * sqrt(2))self.t.pensize(40)self.t.seth(-90)self.t.fd(20)self.t.pensize(2)for i in range(11):self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))self.t.seth(-90)self.t.fd(200)
(3)画(步骤三)
def __goto(self, x: int, y: int) -> None:self.t.penup()#抬笔self.t.goto(x, y)#到x,yself.t.pendown()#落笔
五、运行
if __name__ == '__main__':#运行knot = chineseKnot()knot.drawKnot()
完成啦!
六、完整代码
import turtle as t#导入turtle 老规矩,as t
from math import sqrt#导入平方根class chineseKnot:#中国结'''中国结'''def __init__(self) -> None:# 画笔初始化self.t = tself.t.title("中国结")#标题self.t.pensize(10)#笔粗self.t.setup(700, 700)#界面大小self.t.pencolor("red")#画笔颜色self.t.speed('fastest')#速度# 结心坐标self.x = 0self.y = 200def drawKnot(self) -> None:self.drawBody()self.drawEdge()self.drawAdorn()self.t.hideturtle()#隐藏画笔self.t.done()#完成def drawBody(self) -> None:for i in range(11):#循环self.__goto(self.x - i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-45)self.t.fd(200)self.__goto(self.x + i * 10 * sqrt(2), self.y - i * 10 * sqrt(2))self.t.seth(-135)self.t.fd(200)def drawEdge(self) -> None:for i in range(4):# 左上角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(135)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 右上角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 10 * sqrt(2) - i * 20 * sqrt(2))self.t.seth(45)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 左下角self.__goto(-10 * sqrt(2) - i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-135)self.t.fd(20)self.t.circle(-10, 180)self.t.fd(20)# 右下角self.__goto(10 * sqrt(2) + i * 20 * sqrt(2),200 - 190 * sqrt(2) + i * 20 * sqrt(2))self.t.seth(-45)self.t.fd(20)self.t.circle(10, 180)self.t.fd(20)# 左侧self.t.seth(-45)self.__goto(90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(20, 270)self.__goto(-90 * sqrt(2), 200 - 110 * sqrt(2))self.t.circle(-20, 270)# 右侧self.__goto(80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(40, 270)self.__goto(-80 * sqrt(2), 200 - 120 * sqrt(2))self.t.circle(-40, 270)def drawAdorn(self):# 上侧self.__goto(self.x, self.y)self.t.pensize(14)self.t.seth(90)self.t.fd(60)self.__goto(0, 320)self.t.seth(180)self.t.circle(30, 360)# 下侧self.__goto(0, 200 - 200 * sqrt(2))self.t.pensize(40)self.t.seth(-90)self.t.fd(20)self.t.pensize(2)for i in range(11):self.__goto(-20 + 4 * i, 200 - 200 * sqrt(2))self.t.seth(-90)self.t.fd(200)def __goto(self, x: int, y: int) -> None:self.t.penup()self.t.goto(x, y)self.t.pendown()if __name__ == '__main__':#运行knot = chineseKnot()knot.drawKnot()
七、运行效果
最后,我们可以添加一些代码,例如当键盘按下‘d’时结束运行,按下’q’时退出等
Bye!
python 用turtle模块画一个中国结!附代码、注释相关推荐
- Python的turtle模块画爱心箭(附源码)
Python的turtle模块画爱心箭源码 import turtle as t t.hideturtle() t.speed(100) def f(a,b):#画箭,a,b为箭尖坐标t.penup( ...
- 用python的Turtle库画一个笑脸
用python的Turtle库画一个笑脸 最近刚了解到python的turtle库,就简单的尝试一下,画一个笑脸. 效果图: 效果图看起来和原图的差别还是有点大,但是没关系,这只是一个尝试而已. 附上 ...
- 用python函数画德国国旗代码_用Python的turtle模块画国旗
最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle.这里面有turtle的各类指令.turtle ...
- 用python函数画德国国旗代码_使用Python的turtle模块画国旗
Python的turtle模块画国旗主要用到两个函数:draw_rentangle和draw_star. 至于函数的调用就和我们学的C,C++是一样的.对于turtle画国旗的程序中,首先是查找国旗的 ...
- 利用python的turtle库画一个图形
今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...
- python乌龟画五角星_使用Python的turtle模块画五角星
使用Python中的turtle模块绘制五角星 代码 # 画国旗上的五角星 import turtle import math import numpy as np # 按照下面网址的国旗上五个五角星 ...
- 用python的turtle库画一个小猪佩奇
小猪佩奇是一个可爱的小猪.她已经四岁了,与她的妈妈,爸爸,和弟弟乔治生活在一起.佩奇最喜欢做的事情是玩游戏,打扮的漂亮,度假,以及在小泥坑里快乐的跳上跳下和与小羊苏西(她最好的朋友)乔治(她的弟弟)一 ...
- @用Python的turtle库画一个奥运五环!
turtle库是一个非常有意思的东西,可以做一些画,安装也非常好安装,只需要在电脑中的ide中输入pip install turtle(这是Python2.0版本的安装) python3中输入pip3 ...
- 用python的turtal模块画一个美国国旗
#加载turtle模块 import turtle turtle.reset() turtle.pencolor('white') lens=190*2 kuan=100*2#画矩形 def kk(a ...
最新文章
- 2021高校毕业生薪酬Top100出炉!清华指数TOP,薪酬却排名第二
- 多角度认识markdown
- React事件处理函数传参问题
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
- Spring JDBC-Spring对事务管理的支持
- SQLCE 3.5 部署打包
- 【OpenCV】OpenCV函数精讲之 -- copyTo()函数及Mask详解(附代码详解)
- python中列表生成式strip_python之列表生成式
- bootstrap 兼容哪些浏览器
- MATLAB: 你不知道的12个基础知识
- Hyperledger下子项目
- 联想无线键盘使用方法
- SG函数(hdu1847)
- 完美数的算法设计(C语言)
- 基于matlab的瑞利衰落信道建模和仿真
- VMware虚拟机XP系统安装教程
- PcShare服务端改造
- 人像抠图——基于深度学习一键去除视频背景
- 【精华】安卓开发学习路线规划
- CSDN怎么下载文件
热门文章
- pyecharts生成并保存图片
- Vi设计的可能的行经
- Win10安装IIS问题
- Linux文件权限管理基础
- SMT 求解器 Z3 C++ 学习笔记
- p30会更新鸿蒙系统吗,华为P30怎么升级鸿蒙系统 P30升级鸿蒙系统步骤教程
- p30pro可以更新鸿蒙系统吗,华为p30pro如何升级鸿蒙系统 华为p30pro升级鸿蒙系统教程...
- 字数多的海报如何设计才能抢眼?
- Linux静态库.a与动态库.so的生成与区别、以及.so库文件的封装与使用
- 个人收藏-学习SHarePoint比较不错的网站