天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > python123创意绘画_Turtle 创意绘画

python123创意绘画_Turtle 创意绘画

时间:2024-03-08 02:41:44

相关推荐

python123创意绘画_Turtle 创意绘画

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

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

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

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

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

turtle库 基础教程

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

turtle文字的应用

一个很简单的随机文字fromturtleimport*

importrandom

str_="""

守一段情念一个人。

时光不老我们不散。

厮守终生不离不弃。

天暗下来你就是光。

亡魂溺海止于终老。

生死挈阔与子成说。

柔情似水佳期如梦。

我中有你你中有我。

青山不老为雪白头。

心若向阳无畏悲伤。

一人一心白首不离。

心如荒岛囚我终老。

我的世界只有你懂。

你若安好便是晴天。

心有灵犀一点就通。

厮守海角非你不娶。

执子的手漫漫的走。

执子之手与子偕老。

山河拱手为君一笑。

红尘初妆山河无疆。

千秋功名一世葬你。

既不回头何必不忘。

既然无缘何须誓言。

今日种种似水无痕。

明夕何夕君已陌路。

才会相思便害相思。

人来人往繁华似锦。

回首万年情衷伊人。

生能尽欢死亦无憾。

执手若无泪溅花上。

花开花落人世无常。

入我心者待以君王。

为醉而醉似醉非醉。

伤心鸿影爱已惘然。

只要你要只要我有。

日久生情日久情疏。

忧佳相随风雨无悔。

有生之年誓死娇宠

引喻山河指日可诚。

水上鸳鸯云中翡翠。

天荒地老海誓山盟。

生则同襟死则同穴。

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

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

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

up()

a,b=-500,280

goto(a,b)

bgcolor("black")

down()

defw(str_,b):

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

foriinrange(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))

forkinrange(4):

foriinrange(7):

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

reset()#清屏

foriinrange(7):

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

简单的图形例子

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

speed(0)

bgcolor("white")

pencolor("MediumAquamarine")

h=10

forjinrange(360):

foriinrange(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:/4/522:20

#Author:Mifen

#Email:2952277346@

#Github:/Amd794

importtime

importturtleast

fromturtleimport*

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@',font=("微软雅黑",18))

goto(-600,200)

write('Code:/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]'

}

defdraw_path(path,expalnation):

posList,angleList=[],[]

t.up()

t.goto(0,-350)

t.down()

t.lt(90)

forsymbolinpath:

ifsymbol=='F':

t.forward(length)

elifsymbol=='+':

t.left(angle)

elifsymbol=='-':

t.rt(angle)

elifsymbol=='[':

posList.append(t.pos())

angleList.append(t.heading())

elifsymbol=='a':

t.pensize(3)

t.color("#8c503c")

elifsymbol=='b':

t.pensize(2)

t.color("#4ab441")

elifsymbol=='c':

t.pensize(2)

t.color("#18b418")

elifsymbol==']':

t.up()

t.home()

t.goto(posList.pop())

t.left(angleList.pop())

t.down()

defapply_rules(path,rules):

L=[_for_inpath]

foriinrange(len(L)):

symbol=L[i]

ifsymbol=='F':

L[i]=rules[symbol]

ifsymbol=='X':

L[i]=rules[symbol]

path=''.join(L)

returnpath

for_inrange(5):

path=apply_rules(path,rules)

draw_path(path,expalnation)

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

#Time:/4/622:45

#Author:Mifen

#Email:2952277346@

#Github:/Amd794

fromturtleimport*

importtime

importturtleast

defgotopos(x,y):

up()

goto(x,y)

down()

ht()

defauthor():

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@",font=("华文隶书",18))

gotopos(250,-390)

write("/Amd794/Python123",font=("华文隶书",18))

defapply_rules(path,rules):

L=[_for_inpath]

foriinrange(len(L)):

symbol=L[i]

ifsymbol=='F':

L[i]=rules[symbol]

ifsymbol=='X':

L[i]=rules[symbol]

path=''.join(L)

returnpath

defdraw_path(path):

posList,angleList=[],[]

forsymbolinpath:

ifsymbol=='F':

t.forward(length)

elifsymbol=='+':

t.left(angle)

elifsymbol=='-':

t.rt(angle)

elifsymbol=='[':

posList.append(t.pos())

angleList.append(t.heading())

elifsymbol=='a':

t.pensize(3)

t.color("#867b68")

elifsymbol=='b':

t.pensize(2)

t.color("#867b68")

elifsymbol=='c':

t.pensize(2)

t.color("#867b68")

elifsymbol==']':

t.up()

t.home()

t.goto(posList.pop())

t.left(angleList.pop())

t.down()

defwritez(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="在地愿为连理枝"

foriinrange(len(s)):

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

foriinrange(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_inrange(4):

path=apply_rules(path,rules)

draw_path(path)

gotopos(570,-330)

done()

如果觉得《python123创意绘画_Turtle 创意绘画》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。