前言最初来自于 Wally Feurzig 和 Seymour Papert 于 1966 年所创造的 Logo 编程语言

可以通过相关的指令, 轻松地绘制出精美的形状和图案

可以培养学习计算机的兴趣, 以一种娱乐的方式了解计算机的趣味

Python 海龟创意绘画, Turtle库创作精美图画

通过阅读本文, 你可以学习到LSystem的应用和掌握绘制一些图形 , 有关介绍: https://en.wikipedia.org/wiki/L-system

turtle库 基础教程

个人推荐看官方的文档, https://docs.python.org/zh-cn/3/library/turtle.html

turtle文字的应用

一个很简单的随机文字from turtle import *

import random

str_ = """

守一段情 念一个人。

时光不老 我们不散。

厮守终生 不离不弃。

天暗下来 你就是光。

亡魂溺海 止于终老。

生死挈阔 与子成说。

柔情似水 佳期如梦。

我中有你 你中有我。

青山不老 为雪白头。

心若向阳 无畏悲伤。

一人一心 白首不离。

心如荒岛 囚我终老。

我的世界 只有你懂。

你若安好 便是晴天。

心有灵犀 一点就通。

厮守海角 非你不娶。

执子的手 漫漫的走。

执子之手 与子偕老。

山河拱手 为君一笑。

红尘初妆 山河无疆。

千秋功名 一世葬你。

既不回头 何必不忘。

既然无缘 何须誓言。

今日种种 似水无痕。

明夕何夕 君已陌路。

才会相思 便害相思。

人来人往 繁华似锦。

回首万年 情衷伊人。

生能尽欢 死亦无憾。

执手若无 泪溅花上。

花开花落 人世无常。

入我心者 待以君王。

为醉而醉 似醉非醉。

伤心鸿影 爱已惘然。

只要你要 只要我有。

日久生情 日久情疏。

忧佳相随 风雨无悔。

有生之年 誓死娇宠

引喻山河 指日可诚。

水上鸳鸯 云中翡翠。

天荒地老 海誓山盟。

生则同襟 死则同穴。

生有此女 夫复何求""".split("。")

setup(1280,720)  # 设置窗口大小

colormode(255)  # 使用的颜色模式, 整数还是小数

up()

a, b = -500, 280

goto(a,b)

bgcolor("black")

down()

def w(str_,b):

bgcolor( random.randint(0,255),random.randint(0,255),random.randint(0,255))  # 随机生成RGB值, 每次调用函数改变背景颜色

for i in range(len(str_)):

up()

goto(a+100*i,b)

down()

size =  random.randint(12,68)  # 随机字体大小

color( random.randint(0,255),random.randint(0,255),random.randint(0,255))  # 随机字体颜色

write(str_[i], align="center",font=("楷体",size))

for k in range(4):

for i in range(7):

w(str_[i+7*k],b-100*i)

reset()  # 清屏

for i in range(7):

w(str_[i+7*4],b-100*i)

简单的图形例子

主要是通过改变角度和位置偏移, 做出各种效果from turtle import *

speed(0)

bgcolor("white")

pencolor("MediumAquamarine")

h = 10

for j in range(360):

for i in range(4):

forward(h)

right(90)

right(3)

h = h*1.01

Lsystem 的应用

实质是通过不断变换规则, 绘制出各种发杂图形

以下符号字符的几何解释。#字符含义1F按行绘制一条线向前移动

2f按线条长度向前移动而不绘制线条

3+通过转动角度向左转动

4-通过转动角度向右转动

5/反向(即:转动180度)

6[将当前绘图状态推入堆栈

7]从堆栈弹出当前绘图状态

8#按线宽增量增加线宽

9!通过线宽增量减小线宽

10@绘制带有线宽半径的点

12}关闭多边形并用填充颜色填充

13

14>将线长除以线长比例因子

15&交换+和 - 的含义

16(通过转动角度增量减小转动角度

17)通过转动角度增量来增加转动角度

18{打开多边形函数介绍

draw_path(length, angle, path, expalnation)length ---->每次行走的距离

angle  ---->偏移的角度

path  ---->初始路径图案,即0阶的形状

expalnation  ---->用来记录打印每一步操作

主要用来绘制海龟行走路径

apply_rules(path, rules)path  ---->初始路径图案,即0阶的形状

rules ---->转换的规则

主要是转换每一阶段的path

getColor()提供一个随机rgb值

initialization()初始化各种参数

Introduction(x=-600, y=-350)默认海龟初始位置(-600,-350)

注解

run(n,angle,length,path,rules)

启动程序

实现如下:# -*- coding: utf-8 -*-

# Time    : 2019/4/5 22:20

# Author  : Mifen

# Email   : 2952277346@qq.com

# Github  : https://github.com/Amd794

import time

import turtle as t

from turtle import *

setup(1280,720)

t.speed(0)

t.pensize(1)

length = 5

path = 'FX'

angle = 25

up()

color("#262626;")

goto(-600, 300)

write('Author:Mifen', font=("微软雅黑", 18))

goto(-600, 250)

write('E-mail :2952277346@qq.com', font=("微软雅黑", 18))

goto(-600, 200)

write('Code :https://github.com/Amd794/Python123', font=("微软雅黑", 18))

goto(-600, -350)

down()

expalnation = {

'F': '画线',

'x': '-',

'+': '逆时针旋转',

'-': '顺时针旋转',

'[': '记录当前位置',

']': '恢复上一个位置',

'a': '上色',

'b': '上色',

'c': '上色'

}

rules = {

'F': 'aFF-[b-F+F]+[c+F-F]',

'X': 'aFF+[b+F]+[c-F]'

}

def draw_path(path, expalnation):

posList, angleList = [], []

t.up()

t.goto(0, -350)

t.down()

t.lt(90)

for symbol in path:

if symbol == 'F':

t.forward(length)

elif symbol == '+':

t.left(angle)

elif symbol == '-':

t.rt(angle)

elif symbol == '[':

posList.append(t.pos())

angleList.append(t.heading())

elif symbol == 'a':

t.pensize(3)

t.color("#8c503c")

elif symbol == 'b':

t.pensize(2)

t.color("#4ab441")

elif symbol == 'c':

t.pensize(2)

t.color("#18b418")

elif symbol == ']':

t.up()

t.home()

t.goto(posList.pop())

t.left(angleList.pop())

t.down()

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 path

for _ in range(5):

path = apply_rules(path, rules)

draw_path(path, expalnation)

综合:# -*- coding: utf-8 -*-

# Time    : 2019/4/6 22:45

# Author  : Mifen

# Email   : 2952277346@qq.com

# Github  : https://github.com/Amd794

from turtle import *

import time

import turtle as t

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(525, -330)

color("#772a2b")

write("Mifen", font=("华文隶书", 24))

gotopos(409, -360)

write("2952277346@qq.com", font=("华文隶书", 18))

gotopos(250, -390)

write("https://github.com/Amd794/Python123", font=("华文隶书", 18))

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 path

def draw_path(path):

posList, angleList = [], []

for symbol in path:

if symbol == 'F':

t.forward(length)

elif symbol == '+':

t.left(angle)

elif symbol == '-':

t.rt(angle)

elif symbol == '[':

posList.append(t.pos())

angleList.append(t.heading())

elif symbol == 'a':

t.pensize(3)

t.color("#867b68")

elif symbol == 'b':

t.pensize(2)

t.color("#867b68")

elif symbol == 'c':

t.pensize(2)

t.color("#867b68")

elif symbol == ']':

t.up()

t.home()

t.goto(posList.pop())

t.left(angleList.pop())

t.down()

def writez(x, y, str_, size=56, font="华文行楷"):

gotopos(x, y)

write(str_, font=(font, size))

setup(1280, 800)

speed(5)

bgcolor("#9c917f")

color("#afa697")

begin_fill()

gotopos(0, -400)

circle(400)

end_fill()

author()

color("#7d776d")

s = "愿天化作比翼鸟"

s2 = "在地愿为连理枝"

for i in range(len(s)):

writez(560, 350 - i * 50, s[i], 36)

for i in range(len(s2)):

writez(460, 350 - i * 50, s2[i], 36)

color("#888475")

writez(-50, 100, "我")

writez(-50, 40, "的")

writez(-160, 0, "心", 96)

writez(-50, 0, "月", 176)

writez(33, -30, "代", 62)

writez(-18, -95, "表", 78)

writez(-213, -210, "亮", 196)

gotopos(249, -26)

color("#867b68")

speed(0)

gotopos(-650, -100)

length = 6

path = 'F'

angle = 27

rules = {

'F': 'aFF[b-F++F][c+F--F]c++F--F',

'X': 'aFF+[b+F]+[c-F]'

}

for _ in range(4):

path = apply_rules(path, rules)

draw_path(path)

gotopos(570, -330)

done()

python123创意绘画_Turtle 创意绘画相关推荐

  1. 苹果画画软件_三只苹果改变世界,京东Apple创意节引爆创意能量

    在西方的文化语境中,苹果似乎承担着一些重要的历史任务.从夏娃偷吃禁果,让人类得以自由发展,到牛顿被苹果砸中,启发了以牛顿三大定律为祭奠的物理体系,苹果这种寻常且普通的水果,有意无意地改变了这个世界. ...

  2. AI绘画——了解AI绘画爆火原因与工具,并生成几个端午绘画小作品

    作者简介:一名云计算网络运维人员.每天分享网络与运维的技术与干货.   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.AI绘画 1.AI绘画爆火原因 2.AI绘画背后原 ...

  3. AI绘画,AI绘画小程序软件,AI换脸,AI人工智能绘画

    AI绘画,AI绘画小程序软件,AI换脸,AI人工智能绘画 可前往微信小程序进行体验:AI创意空间 AI创意主流人工智能绘画平台_语言转插画_众多绘画风格,ai绘画激发无限灵感创意,丰富图片细节 此小程 ...

  4. 静态创意和动态创意_我在22岁时学到的关于创意指导的知识

    静态创意和动态创意 During my last semester at college, I took a course titled "Collaborative Workshop&qu ...

  5. 拼多多 标题 html,拼多多的创意图和创意标题怎么测试?为什么要测试?怎样测试呢?...

    1. 首先,什么是创意昵?创意在推广里面的载体有两个: 2. 从拼多多商家后台_搜索推广/场景推广-对应计划的"编辑" _对应推广单元的"编辑" _创意列表,可 ...

  6. 未来的计算机绘画图片,电脑绘画——为想象力插上科技的翅膀 二十中附校科技社团电脑绘画作品展...

    原标题:电脑绘画--为想象力插上科技的翅膀 二十中附校科技社团电脑绘画作品展 二十中附校电脑绘画卓越能力课程开展至今有近2年时间了.课程帮助学生认识绘画工具和软件.培养良好的绘画习惯.提高绘画和艺术创 ...

  7. 静态创意和动态创意_8种独特且价格合理的名片的创意

    静态创意和动态创意 There are a number of posts out there with collections of really cool and unique business ...

  8. 静态创意和动态创意_2020年创意工作的5个预测

    静态创意和动态创意 重点 (Top highlight) Five years isn't that long in the big scheme of things, and yet, it's s ...

  9. 巨量引擎创意分类和创意标签使用技巧

    今天主要和大家聊聊: 创意标签和创意分类使用方法 一: 系统是如何把广告投放给目标人群的? 答案: 账户定向(基础定向+目标定向)+素材(标题+图片+视频)+创意分类+创意标签 按照上面的公式的四个因 ...

最新文章

  1. 在php中_post啥意思,php中$_post什么意思
  2. MEF: MSDN 杂志上的文章(9) 控制部件创建策略 ???
  3. 顶配版阿里大佬面试笔记+300道硬核面试题,跪着啃完了。。。。
  4. Merge Intervals
  5. JDK、J2EE、J2SE、J2ME的区别
  6. Mahout分步式程序开发 基于物品的协同过滤ItemCF
  7. python爬取岗位数据并分析_区块链岗位薪资高,Python爬取300个区块链岗位分析,龙虎榜出炉...
  8. leetcode 494. Target Sum | 494. 目标和(动态规划)
  9. RESTful服务的第三部分:HATEOAS和Richardson成熟度模型
  10. centos6.5 下搭建lamp环境
  11. IntelliJ-IDEA-Debug技巧
  12. 用栈实现中缀表达式求值
  13. 数据库概述 数据库入门
  14. PTA 程序设计天梯赛(1~180题)
  15. 轻松处理PHP开发中微信emoji表情mysql存储的问题
  16. 债券指数基金以及债券ETF
  17. 中通快递信息怎么批量导出到表格呢?
  18. 炼数成金Scala语言入门
  19. 苏格拉底和柏拉图甩手的故事
  20. 泰坦尼克号生存情况预测

热门文章

  1. 我眼里的奇酷手机360OS
  2. 所有平台emoji表情查询网站,记录一下
  3. AIX7.1 安装配置 EMC CLARiiON 存储驱动软件
  4. 二维数组(矩阵)顺时针旋转90°
  5. windows中的出站和入站规则
  6. 乌班图安装出现无法获取锁解决
  7. Cunti 使用简介
  8. 2020-319 几种分类器评估与调优方法手写整理 37互娱笔试题
  9. 数据分析的五大用处,你都知道吗?
  10. 北大CSAPP期末题