python用turtle库绘画圣诞树
作者:小唐YiJiaTang 发布时间:2023-05-24 19:35:40
标签:python,圣诞树
前言
圣诞节快到了,是不是想用python画一个可爱的圣诞树,我在各大网站都查了一下,都不太美观,然后我就学习了一下别人的代码改写了一下,自己加了一些东西,弄的好看一些了,给大家开源出来,欢迎大家指正学习,也欢迎转载,请注明出处哦~
画出来的图形如图:
一、Turtle是什么?
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
二、使用步骤
1.引入库
代码如下:
import turtle as t # as就是取个别名,后续调用的t都是turtle
from turtle import *
import random as r
2.turtle绘图的基础知识
(1) 画笔运动命令
(2) 画笔控制命令
(3) 全局控制命令
(4) 全局控制命令
三、圣诞树代码
代码如下:
# TangYiJia 2021/12/15
import turtle as t # as就是取个别名,后续调用的t都是turtle
from turtle import *
import random as r
n = 100.0
speed(1000) # 定义速度
pensize(5) # 画笔宽度
screensize(800, 800, bg='black') # 定义背景颜色,可以自己换颜色
left(90)
forward(250) # 开始的高度
color("orange", "yellow") # 定义最上端星星的颜色,外圈是orange,内部是yellow
begin_fill()
left(126)
for i in range(5): # 画五角星
forward(n / 5)
right(144) # 五角星的角度
forward(n / 5)
left(72) # 继续换角度
end_fill()
right(126)
def drawlight(): # 定义画彩灯的方法
if r.randint(0, 50) == 0: # 如果觉得彩灯太多,可以把取值范围加大一些,对应的灯就会少一些
color('tomato') # 定义第一种颜色
circle(3) # 定义彩灯大小
elif r.randint(0, 30) == 1:
color('orange') # 定义第二种颜色
circle(4) # 定义彩灯大小
elif r.randint(0, 50) == 2:
color('blue') # 定义第三种颜色
circle(2) # 定义彩灯大小
elif r.randint(0, 30) == 3:
color('white') # 定义第四种颜色
circle(4) # 定义彩灯大小
else:
color('dark green') # 其余的随机数情况下画空的树枝
color("dark green") # 定义树枝的颜色
backward(n * 4.8)
def tree(d, s): # 开始画树
if d <= 0: return
forward(s)
tree(d - 1, s * .8)
right(120)
tree(d - 3, s * .5)
drawlight() # 同时调用小彩灯的方法
right(120)
tree(d - 3, s * .5)
right(120)
backward(s)
tree(15, 100)
backward(50)
for i in range(200): # 循环画最底端的小装饰
a = 200 - 400 * r.random()
b = 10 - 20 * r.random()
up()
forward(b)
left(90)
forward(a)
down()
if r.randint(0, 1) == 0:
color('tomato')
else:
color('wheat')
circle(2)
up()
backward(a)
right(90)
backward(b)
def drawsnowman(n,m,a,b): # 画雪人 (n,m)是头和身子交点的坐标,a是头的大小,m是身体的大小
t.goto(n, m)
t.pencolor("white")
t.pensize(2)
t.fillcolor("white")
t.seth(0)
t.begin_fill()
t.circle(a)
t.end_fill()
t.seth(180)
t.begin_fill()
t.circle(b)
t.end_fill()
t.pencolor("black")
t.fillcolor("black")
t.penup() # 右眼睛
t.goto(n-a/4, m+a)
t.seth(0)
t.pendown()
t.begin_fill()
t.circle(2)
t.end_fill()
t.penup() # 左眼睛
t.goto(n+a/4, m+a)
t.seth(0)
t.pendown()
t.begin_fill()
t.circle(2)
t.end_fill()
t.penup() # 画嘴巴
t.goto(n, m+a/2)
t.seth(0)
t.pendown()
t.fd(5)
t.penup() # 画扣子
t.pencolor("red")
t.fillcolor("red")
t.goto(n, m-b/4)
t.pendown()
t.begin_fill()
t.circle(2)
t.end_fill()
t.penup()
t.pencolor("yellow")
t.fillcolor("yellow")
t.goto(n, m-b/2)
t.pendown()
t.begin_fill()
t.circle(2)
t.end_fill()
t.penup()
t.pencolor("orange")
t.fillcolor("orange")
t.goto(n, m-(3*b)/4)
t.pendown()
t.begin_fill()
t.circle(2)
t.end_fill()
drawsnowman(-200, -200, 20, 30)
drawsnowman(-250, -200, 30, 40)
t.up()
t.goto(100, 200)
t.down()
t.color("dark red", "red") # 定义字体颜色
t.penup()
t.write("小唐's Christmas Tree", font=("Comic Sans MS", 16, "bold")) # 定义文字、位置、字体、大小
t.end_fill()
def drawsnow(): # 画雪花
t.ht() # 隐藏笔头,ht=hideturtle
t.pensize(2) # 定义笔头大小
for i in range(200): # 画多少雪花
t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色
t.pu() # 提笔,pu=penup
t.setx(r.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择
t.sety(r.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始
t.pd() # 落笔,pd=pendown
dens = 6 # 雪花瓣数设为6
snowsize = r.randint(1, 10) # 定义雪花大小
for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星
# t.forward(int(snowsize)) #int()取整数
t.fd(int(snowsize))
t.backward(int(snowsize))
# t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug
t.right(int(360 / dens)) # 转动角度
drawsnow() # 调用画雪花的方法
t.done() # 完成,否则会直接关闭
来源:https://blog.csdn.net/TYJhhxx/article/details/121962889


猜你喜欢
- 本文实例讲述了python实现统计代码行数的方法。分享给大家供大家参考。具体实现方法如下:'''Author: li
- 在mysql的手册中已经对max_user_connections有一点说明,它是用来限制用户资源的,怎么限制用户资源呢?这里做了个小测试。
- 案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦'的页面数据)import urllib.request# 1
- enumerate首先介绍的是enumerate函数。在我们日常编程的过程当中,经常会遇到一个问题。在C语言以及一些古老的语言当中是没有迭代
- 本文实例讲述了js+html5实现canvas绘制镂空字体文本的方法。分享给大家供大家参考。具体实现方法如下:<!DOCTYPE ht
- 本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下:使用Protocol Buffers的跨平台RPC系统。安装使用 p
- 在数字图像中,往往存在着一些特殊形状的几何图形,像检测马路边一条直线,检测人眼的圆形等等,有时我们需要把这些特定图形检测出来,hough变换
- 前言滑块拼图验证码的失败难度在于每次图片上缺口位置不一样,需识别图片上拼图的缺口位置,使用python的OpenCV库来识别到环境准备pip
- 本文介绍了Python实现曲线点抽稀算法的示例,分享给大家,具体如下:目录何为抽稀道格拉斯-普克(Douglas-Peuker)算法垂距限值
- 1、django应用Celerydjango框架请求/响应的过程是同步的,框架本身无法实现异步响应。但是我们在项目过程中会经常会遇到一些耗时
- 前言经典面试题: 判断一个字符串里面的括号是否闭合,如:{{()}} 就是一个闭合的字符串。{{()}]} 这个里面 ([)] 括号不对称,
- 在 Python 2.5 中, with 关键字被加入。它将常用的 try ... except ... finally ... 模式很方便
- 第1章 新建工程和创建app新建工程和创建app就不用贴出来了,我这里是测试图片上传的功能能否实现,所以项目都是新的,正常在以有的app下就
- 本文实例讲述了PHP函数shuffle()取数组若干个随机元素的方法。分享给大家供大家参考,具体如下:有时候我们需要取数组中若干个随机元素(
- drop procedure sp_name//在此之前,小编给大家讲述过MYSQL语法的基本知识,本篇内容,小编通过下面的一个实例,给读者
- index_selectanchor_w = self.FloatTensor(self.scaled_anchors).index_sel
- 最近在做一个手机站,要求点击分享可以直接打开微信分享出去。而不是jiathis,share分享这种的点击出来二维码。在网上看了很多,都说AP
- 上一篇:微软建议的ASP性能优化28条守则(8)技巧 28:阅读资源链接下面是一些与性能有关的出色的资源链接。如果您想了解有关信息,请阅读
- 做一个简单的小实例:目录结构如下:demo1.pyclass MyClass():def __init__(self,x,y):  
- 本文实例讲述了Python常见数字运算操作。分享给大家供大家参考,具体如下:Python 解释器可以作为一个简单的计算器:您可以在解释器里输