turtle 绘画创意图形

画梅花

# -*- coding = utf-8 -*-
# @Time : 2021/10/11 20:35
# @Author : luxiaoguo
# @File : 绘画创意图形.py
# @Software : PyCharm
import turtle
from turtle import *
from random import *# 画雪花
def drawSnow():hideturtle()pensize(2)for i in range(20):pencolor("white")penup()setx(randint(-640, 640))sety(randint(-400, 400))pendown()dens = randint(8, 12)snowsize = randint(10, 14)for j in range(dens):forward(snowsize)backward(snowsize)right(360 / dens)# 位移函数
def gotopos(x, y):up()goto(x, y)down()ht()def author():pensize(2)gotopos(610, -315)lt(-90)fd(80)pensize(1)lt(-270)gotopos(478, -330)color("#772a2b")write("luxiaoguo", font=("华文隶书", 24))gotopos(409, -360)write("766389746@qq.com", font=("华文隶书", 18))author()def apply_rules(path, rules):L = [_ for _ in path]for i in range(len(L)):symbol = L[i]if symbol == 'F':L[i] = rules[symbol]if symbol == 'X':L[i] = rules[symbol]path = ''.join(L)return pathdef draw_path(path):posList, angleList = [], []for symbol in path:if symbol == 'F':forward(length)elif symbol == '+':left(angle)elif symbol == '-':rt(angle)elif symbol == '[':posList.append(pos())angleList.append(heading())elif symbol == 'a':pensize(3)color("black")elif symbol == 'b':pensize(2)color("red")elif symbol == 'c':pensize(2)color("black")elif symbol == ']':up()home()goto(posList.pop())left(angleList.pop())down()# 写字
def writez(x, y, str_, size=56, font="华文行楷"):gotopos(x, y)write(str_, font=(font, size))# 画布
turtle.setup(1280, 800)
speed(10)
bgcolor("Silver")# 题字
color("black")
writez(-213, -210, "梅", 196)
writez(-50, 100, "宋")
writez(80, 20, "王")
writez(33, -30, "安", 62)
writez(-18, -95, "石", 78)# 写诗
color("black")
s = "墙角数枝梅"
s2 = "凌寒独自开"
s3 = "遥知不是雪"
s4 = "为有暗香来"
for i in range(len(s)):writez(560, 350 - i * 50, s[i], 36)
for i in range(len(s2)):writez(510, 320 - i * 50, s2[i], 36)
for i in range(len(s3)):writez(460, 290 - i * 50, s3[i], 36)
for i in range(len(s4)):writez(410, 260 - i * 50, s4[i], 36)# 画雪
drawSnow()# 画梅
gotopos(251, -36)
speed(10)
gotopos(-650, -200)
# 长度
length = 7
# 初始路经
path = 'X'
# 角度
angle = 27
# 规则
rules = {'F': 'aFF[b-F++F][b+F--F]c++F--F','X': 'aFF+[b+F]+[c-F]'
}
for _ in range(4):path = apply_rules(path, rules)
draw_path(path)done()

时钟

# -*- coding = utf-8 -*-
# @Time : 2021/10/11 20:09
# @Author : luxiaoguo
# @File : 时钟.py
# @Software : PyCharm
# coding=utf-8import turtle
from datetime import *# 抬起画笔,向前运动一段距离放下
def Skip(step):turtle.penup()turtle.forward(step)turtle.pendown()def mkHand(name, length):# 注册Turtle形状,建立表针Turtleturtle.reset()Skip(-length * 0.1)# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。turtle.begin_poly()turtle.forward(length * 1.1)# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。turtle.end_poly()# 返回最后记录的多边形。handForm = turtle.get_poly()turtle.register_shape(name, handForm)def Init():global secHand, minHand, hurHand, printer# 重置Turtle指向北turtle.mode("logo")# 建立三个表针Turtle并初始化mkHand("secHand", 135)mkHand("minHand", 125)mkHand("hurHand", 90)secHand = turtle.Turtle()secHand.shape("secHand")minHand = turtle.Turtle()minHand.shape("minHand")hurHand = turtle.Turtle()hurHand.shape("hurHand")for hand in secHand, minHand, hurHand:hand.shapesize(1, 1, 3)hand.speed(0)# 建立输出文字Turtleprinter = turtle.Turtle()# 隐藏画笔的turtle形状printer.hideturtle()printer.penup()def SetupClock(radius):# 建立表的外框turtle.reset()turtle.pensize(7)for i in range(60):Skip(radius)if i % 5 == 0:turtle.forward(20)Skip(-radius - 20)Skip(radius + 20)if i == 0:turtle.write(int(12), align="center", font=("Courier", 14, "bold"))elif i == 30:Skip(25)turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-25)elif (i == 25 or i == 35):Skip(20)turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-20)else:turtle.write(int(i / 5), align="center", font=("Courier", 14, "bold"))Skip(-radius - 20)else:turtle.dot(5)Skip(-radius)turtle.right(6)def Week(t):week = ["星期一", "星期二", "星期三","星期四", "星期五", "星期六", "星期日"]return week[t.weekday()]def Date(t):y = t.yearm = t.monthd = t.dayreturn "%s %d%d" % (y, m, d)def Tick():# 绘制表针的动态显示t = datetime.today()second = t.second + t.microsecond * 0.000001minute = t.minute + second / 60.0hour = t.hour + minute / 60.0secHand.setheading(6 * second)minHand.setheading(6 * minute)hurHand.setheading(30 * hour)turtle.tracer(False)printer.forward(65)printer.write(Week(t), align="center",font=("Courier", 14, "bold"))printer.back(130)printer.write(Date(t), align="center",font=("Courier", 14, "bold"))printer.home()turtle.tracer(True)# 100ms后继续调用tickturtle.ontimer(Tick, 100)def main():# 打开/关闭龟动画,并为更新图纸设置延迟。turtle.tracer(False)Init()SetupClock(160)turtle.tracer(True)Tick()turtle.mainloop()if __name__ == "__main__":main()

2021-10-27 turtle 绘画创意图形(梅花)相关推荐

  1. MPC模型预测控制学习笔记-2021.10.27

    MPC模型预测控制学习笔记-点击目录就可以跳转 1. 笔者介绍 2. 参考资料 3. MPC分类 4. 数据的标准化与归一化 5. MATLAB-MPC学习笔记 5.1 获取测试信号:gensig( ...

  2. python turtle 绘制创意梅花

    """ author:魏振东 data:2019.10.25 func:绘制创意图形 """from turtle import * fro ...

  3. [2021.1.27多校省选模拟10]跑步(线段树合并)

    [2021.1.27多校省选模拟10]跑步 经典的树上启发式合并题目,维护对应子树的从当前点到子树内一个节点这个链待定,其他部分已经确定的方案数,这个东西按照对应点到根节点的路径点权和为下标存在一个权 ...

  4. [2021.1.27多校省选模拟10]染色(min-max容斥/二项式反演)

    [2021.1.27多校省选模拟10]染色 突然发现我对概率期望的理解不是很好... 部分分1:可以直接进行状压dp,然后按照题意模拟即可. 部分分2:首先可以发现这个问题是min_max容斥形式,然 ...

  5. 【python:turtle绘画 圣诞树】

    用python画一个圣诞树 小雪人 文章目录 前言 一.Turtle是什么? 二.使用步骤 1.引入库 2.turtle绘图的基础知识 三.圣诞树代码 总结 前言 圣诞节快到了,是不是想用python ...

  6. turtle绘画-移动落笔点(改变初始原点)

    在用turtle绘画时,画笔的第一笔落笔点默认是在画布中心,画笔朝东(向右),但是有时需要绘制一些不对称的图,画笔落在画布中心会使结果偏离中心或画出画布.所以需要移动画笔的初始落笔点. 这里有两个方法 ...

  7. 利用turtle库绘制图形---Python

    引入turtle库 pip3 install 库名 1.在cmd里安装pyintsaller包 第一步安装将Python代码转成exe的工具包–pyinstaller:需要打开cmd,然后在cmd里输 ...

  8. python turtle库画图案-python中的turtle库绘制图形

    1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...

  9. python turtle库画图案-Python如何使用turtle库绘制图形

    1. 前奏: 在用turtle绘制图形时,需要安装对应python的解释器以及IDE,我安装的是pycharm,在安装完pycharm后,在pycharm安装相应库的模块,绘图可以引入turtle模块 ...

  10. pythonturtle画点的指令_简述python的turtle绘画命令及解释

    一 基础认识 turtle库是python的标准库之一,它是一个直观有趣的图形绘制数据库,turtle(海龟)图形绘制的概念诞生1969年.它的应用十分广,而且使用简单,只要在编写python程序时写 ...

最新文章

  1. QCon讲师对对碰——洪小军采访梁宇鹏:就是爱Golang
  2. 自训练:超越预训练,展现强大互补特性的上分新范式!
  3. 华为Mate40系列或10月15日发布:麒麟9000+66W双向快充
  4. 15.5.1【Task实现细节】 生成的代码
  5. 矩池云上CUDA、nvcc、cuDNN相关操作汇总
  6. JsonCpp 入门教程
  7. ftp 访问mysql6,RedHat6.5开启ftp访问已有目录方法
  8. 在用户控件中动态添加控件及事件
  9. localtime选择00:00值不回显_配置OSPF的DR选择示例
  10. 学计算机 数学日记,数学日记3篇
  11. c语言程序运行时可以从键盘上读入,C语言程序设计题库之
  12. java 二分查找法和顺序查找法的效率比较
  13. 紫光拼音输入法6.7.0.9 论坛测试版发布
  14. 网页设计如何做?全流程其实只有这五步!
  15. 解决前端微信浏览器中video标签不能自动播放视频问题
  16. Visual Leak Detector VS2019
  17. mysql库函数说明_MySQL 数据库函数库
  18. 2022考研笔记-数学(高等数学预备知识)
  19. NJUPT 《信安数基》第 11 章解题攻略
  20. 【疯了Labview】(一)仿JKI的RCF 挂件

热门文章

  1. Kinect2.0在win10平台上时断时续问题的解决办法
  2. 牛顿迭代法 解 二元高次方程组 Mathematica
  3. 视频压缩大小怎么做?压缩视频用这3个工具准没错!
  4. Android5.0+win8双系统平板PK苹果ipad
  5. vue3.0+vite+ts使用swiper如何掉用autoplay
  6. einops使用方法
  7. 021—转载-各种数据类型在16位、32位和64位系统下所占字节差异简介
  8. 环信头像和昵称显示问题 (添加消息扩展)--本人已实现效果
  9. 春节快过腻了?不妨关心下太空探索
  10. WEB_BASIC---02 CSS概述、CSS语法、CSS选择器、CSS声明