最近接触到 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) - 随机移动,万花筒和点图...相关推荐

  1. python绘制二维图形_使用python绘制二维图形示例

    我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...

  2. python turtle 乌龟赛跑_用 Python Turtle 模块做小游戏 (2) - 画笔和乌龟赛跑

    上一篇 豆子学习了基本的Turtle的使用,比如移动,定位,色彩等等.这次来看看他对事件的处理功能. 首先来看看个小游戏,通过几个按键的事件,实现 w(前进),s ( 后退),a (左转),d (右转 ...

  3. python 贴吧盖楼_ es6 + canvas 开源 盖楼小游戏 完整代码注释 从零教你做游戏(一)...

    盖楼游戏 一个基于 Canvas 的盖楼游戏 Demo 预览 手机设备可以扫描下方二维码 github Game Rule 游戏规则 以下为默认游戏规则,也可参照下节自定义游戏参数 每局游戏生命值为3 ...

  4. python里graphics的使用_使用graphics.py实现2048小游戏

    1.过年的时候在手机上下载了2048玩了几天,心血来潮决定用py写一个,刚开始的时候想用QT实现,发现依赖有点大.正好看到graphics.py是基于tkinter做的封装就拿来练手,并借用了CSDN ...

  5. python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码

    最近有这样一需求,需要获取12123交管查询网站上的全国每个城市对应的城市id和车牌代码.最初的想法是直接用Python写个爬虫,遍历每个城市,然后用Xpath提取DOM节点数据就好了.然而在实际操作 ...

  6. python随机生成红包_自制Python随机红包

    1.部署Python 首先从Python.org下载Python3.9,然后安装就行了 Win10建议在安装一下UWP版的哈,因为命令行里要下载命令行专用的 安装步骤:Windows徽标键+R 打开运 ...

  7. 怎样用python绘制简单的图形_用python 画几个简单图案

    原博文 2019-11-15 09:44 − 1 turtle turtle这个库真的很好玩,用很简单几行代码就能画出好看的图案,最近无聊翻了翻之前自己画的哈哈哈哈,分享几个代码 画一个类似五颜六色的 ...

  8. python拆分字符串生成列表_关于python:如何将字符串拆分为列表?

    我希望我的python函数分割一个句子(输入)并将每个单词存储在一个列表中.我当前的代码将句子拆分,但不将单词存储为列表.我该怎么做? 1 2 3 4 5 6 7 8 9 10def split_li ...

  9. 怎样用python绘制简单的图形_使用python绘制图形并使用HTML显示它

    ....some html... {{ div_placeholder }} ...more html...

最新文章

  1. python中使用if __name__ == '__main__':
  2. ***使用PHP实现文件上传和多文件上传
  3. Junit4集成到Maven工程
  4. libjpeg学习3:turbojpeg试用
  5. 动画:什么是散列表?
  6. Snagit 12 – 功能强的老牌截图软件
  7. 吴恩达—机器学习的六个核心算法
  8. JNA实战系列:JNA与C语言中的数据类型映射以及复杂结构体传参示例
  9. element-ui+vue给登录界面创建一个走马灯幻灯片切换
  10. 如何使用node.js后端框架中的egg.js框架
  11. 2011年第36届大连赛区现场赛Board
  12. ▷Scratch课堂丨【编程趣味卡3】制作音乐
  13. 5月6日地图下载。同学们要练习!
  14. 视频播放器(一):流程
  15. faiss 相似特征向量搜索
  16. JS小知识,如何将 CSV 转换为 JSON 字符串
  17. 【良心】C语言零基础学习,C语言初学者入门基础知识讲解
  18. 京东首曝无人仓 四款机器人引爆智慧物流黑科技
  19. uniapp vue页面嵌套webview组件 ,自定义webview大小
  20. 计算机毕业设计ssm图书出版系统0fes8系统+程序+源码+lw+远程部署

热门文章

  1. 图片/视频去水印代码(毕业设计)
  2. 基于Java+SpringBoot的鞋类商品购物商城系统设计与实现
  3. 天刀开放冬至垂钓新弄法 冬季暖心五年夜运动-新浪天边明月刀专区
  4. 控制台五子棋--学习笔记
  5. MySQL数据库中有字段类型是日期,时间的插入语句处理
  6. ap模式和sta模式共存_WIFI模块的STA模式和AP模式有什么区别
  7. 哪款Mac代码编辑器好用?Mac文本代码编辑器推荐—-CudaText for Mac
  8. Redis常用配置详解
  9. 通过ip地址访问ESP32-CAM 相机
  10. 健身工作室活不过2年?健身房捷径管理系统成为破局关键