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()
最后效果如下
python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动,万花筒和点图...相关推荐
- python绘制二维图形_使用python绘制二维图形示例
我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...
- python turtle 乌龟赛跑_用 Python Turtle 模块做小游戏 (2) - 画笔和乌龟赛跑
上一篇 豆子学习了基本的Turtle的使用,比如移动,定位,色彩等等.这次来看看他对事件的处理功能. 首先来看看个小游戏,通过几个按键的事件,实现 w(前进),s ( 后退),a (左转),d (右转 ...
- python 贴吧盖楼_ es6 + canvas 开源 盖楼小游戏 完整代码注释 从零教你做游戏(一)...
盖楼游戏 一个基于 Canvas 的盖楼游戏 Demo 预览 手机设备可以扫描下方二维码 github Game Rule 游戏规则 以下为默认游戏规则,也可参照下节自定义游戏参数 每局游戏生命值为3 ...
- python里graphics的使用_使用graphics.py实现2048小游戏
1.过年的时候在手机上下载了2048玩了几天,心血来潮决定用py写一个,刚开始的时候想用QT实现,发现依赖有点大.正好看到graphics.py是基于tkinter做的封装就拿来练手,并借用了CSDN ...
- python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码
最近有这样一需求,需要获取12123交管查询网站上的全国每个城市对应的城市id和车牌代码.最初的想法是直接用Python写个爬虫,遍历每个城市,然后用Xpath提取DOM节点数据就好了.然而在实际操作 ...
- python随机生成红包_自制Python随机红包
1.部署Python 首先从Python.org下载Python3.9,然后安装就行了 Win10建议在安装一下UWP版的哈,因为命令行里要下载命令行专用的 安装步骤:Windows徽标键+R 打开运 ...
- 怎样用python绘制简单的图形_用python 画几个简单图案
原博文 2019-11-15 09:44 − 1 turtle turtle这个库真的很好玩,用很简单几行代码就能画出好看的图案,最近无聊翻了翻之前自己画的哈哈哈哈,分享几个代码 画一个类似五颜六色的 ...
- python拆分字符串生成列表_关于python:如何将字符串拆分为列表?
我希望我的python函数分割一个句子(输入)并将每个单词存储在一个列表中.我当前的代码将句子拆分,但不将单词存储为列表.我该怎么做? 1 2 3 4 5 6 7 8 9 10def split_li ...
- 怎样用python绘制简单的图形_使用python绘制图形并使用HTML显示它
....some html... {{ div_placeholder }} ...more html...
最新文章
- python中使用if __name__ == '__main__':
- ***使用PHP实现文件上传和多文件上传
- Junit4集成到Maven工程
- libjpeg学习3:turbojpeg试用
- 动画:什么是散列表?
- Snagit 12 – 功能强的老牌截图软件
- 吴恩达—机器学习的六个核心算法
- JNA实战系列:JNA与C语言中的数据类型映射以及复杂结构体传参示例
- element-ui+vue给登录界面创建一个走马灯幻灯片切换
- 如何使用node.js后端框架中的egg.js框架
- 2011年第36届大连赛区现场赛Board
- ▷Scratch课堂丨【编程趣味卡3】制作音乐
- 5月6日地图下载。同学们要练习!
- 视频播放器(一):流程
- faiss 相似特征向量搜索
- JS小知识,如何将 CSV 转换为 JSON 字符串
- 【良心】C语言零基础学习,C语言初学者入门基础知识讲解
- 京东首曝无人仓 四款机器人引爆智慧物流黑科技
- uniapp vue页面嵌套webview组件 ,自定义webview大小
- 计算机毕业设计ssm图书出版系统0fes8系统+程序+源码+lw+远程部署