700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动 万花筒和点图...

python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动 万花筒和点图...

时间:2019-04-27 23:09:36

相关推荐

python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动 万花筒和点图...

最近接触到 Python的一个绘图模块 Turtle,学习以后,发现这是一个很有趣的模块。我们可以利用这个模块进行画图,甚至做一些怀旧的小游戏。这个模块的文档链接如下。

简单的说,可以把画板想象成一个X-Y的坐标轴,原点就在中间,一个海龟在坐标图里面到处跑,他的爬行痕迹就是我们生成的图形。我们可以通过控制坐标的位置,方向,颜色,基本图形和移动方向来创建各种有趣的图案。

比如说,我打算生成一个随机的线路,每次转变方向用不同的颜色表示。

from turtle import Turtle, Screen

import random

import colorgram

import turtle as t

#设置颜色类型为RGB格式,默认为字符串

t.colormode(255)

tim = Turtle()

#设置一个随机的方向选择

options=[0,90,180,270]

#生成随机的RGB元组

def randomcolor():

r= random.randint(0,255)

g= random.randint(0,255)

b = random.randint(0, 255)

return (r,g,b)

tim.speed('fastest')

#随机选择一个方向,选择一个颜色,线条加粗

def randomwalk():

tim.setheading(random.choice(options))

tim.color(randomcolor())

tim.speed('fast')

tim.pensize(10)

tim.forward(20)

for i in range(100):

randomwalk()

screen = Screen()

screen.exitonclick()

再比如说 我打算生成一个万花筒,其实就是画圆,每次画圆,偏移一定的角度,随机生成一些颜色就行了

from turtle import Turtle, Screen

import random

import colorgram

import turtle as t

#设定颜色模式,不然默认是字符串的格式,而不是RGB的格式

t.colormode(255)

tim = Turtle()

#生成一个随机的RGB的元组

def randomcolor():

r= random.randint(0,255)

g= random.randint(0,255)

b = random.randint(0, 255)

return (r,g,b)

tim.speed('fastest')

def draw_spirograph(size):

for i in range(int(360/size)):

tim.circle(100)

tim.color(randomcolor())

print(tim.heading())

#每次画圆都偏移一下方向

current_heading=tim.heading()

tim.setheading(current_heading+size)

tim.circle(100)

draw_spirograph(10)

#下面的部分是生成一个画板界面,点击退出,不然默认一闪而过就没有了

screen = Screen()

screen.exitonclick()

效果如下

最后再看一个例子,如何生成了一个10X10的 点图。说起点图,最出名的是一个叫 Damie Hirst的艺术家,他的点图能卖个上百万美元 ??!! 艺术品大概就和下面的样子差不多。

那么用我们的海龟模块,我们可以很轻松的模拟一个出来。 首先下载一个Damie的大作,转换成jpg格式,通过colorgram的模块 我们可以获取到Damie到底使用了哪些颜色的RGB,保存为一个列表,我们就可以随机地获取颜色生成自己的点图了。

from turtle import Turtle, Screen

import random

import colorgram

import turtle as t

#设置颜色模式为RGB

t.colormode(255)

tim = Turtle()

#从一个现有的jpg图获取主要的色彩

colors=colorgram.extract('spot.jpg',20)

colorlist=[]

for color in colors:

# print(color.rgb)

colorlist.append((color.rgb.r,color.rgb.g,color.rgb.b))

print(colorlist)

#隐藏海龟的小图标和画图的路径,设置爬行速度为最快

tim.penup()

tim.hideturtle()

tim.speed('fastest')

#因为海龟默认是从原点(图正中央)开始爬,如果内容太多的话可能会爬出边界,所以我先把他的坐标往左下方挪一挪

tim.setheading(225)

tim.forward(300)

tim.setheading(0)

currentlocation=tim.position()

print(currentlocation)

#简单的双重循环,每次生成一个随机颜色的点,唯一注意的就是海龟爬的方向和坐标了

for i in range(10):

for j in range(10):

tim.dot(30,random.choice(colorlist))

tim.forward(40)

tim.setposition((currentlocation[0]),40*(i+1)+currentlocation[1])

#这个screen的对象保证画板需要手动关闭

screen = Screen()

screen.exitonclick()

最后效果如下

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