【python:turtle绘画 圣诞树】



python画一个圣诞树 小雪人

文章目录

前言

圣诞节快到了,是不是想用python画一个可爱的圣诞树,我在各大网站都查了一下,都不太美观,然后我就学习了一下别人的代码改写了一下,自己加了一些东西,弄的好看一些了,给大家开源出来,欢迎大家指正学习,也欢迎转载,请注明出处哦~

画出来的图形如图:

【python:turtle绘画 圣诞树】

; 一、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) 画笔运动命令

【python:turtle绘画 圣诞树】
(2) 画笔控制命令
【python:turtle绘画 圣诞树】
(3) 全局控制命令
【python:turtle绘画 圣诞树】
(4) 全局控制命令
【python:turtle绘画 圣诞树】

; 三、圣诞树代码

代码如下:

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()  # 完成,否则会直接关闭

总结

这就是基本的代码啦,欢迎大家评论指正学习! 唐怡佳也要继续加油呀!

Original: https://blog.csdn.net/TYJhhxx/article/details/121962889
Author: 小唐YiJiaTang
Title: 【python:turtle绘画 圣诞树】

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/726406/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 什么是数据探索?

    什么是数据探索? 简介 步骤 * 1、缺失值处理 2、number数据和非number数据 异常值的观察与处理: * 为什么要处理异常值? 箱型图 – 箱型图介绍 箱型…

    Python 2023年9月30日
    017
  • 使用 Anaconda 安装 Pytorch

    PyTorch介绍:PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。其运行环境已兼容Windows (CUDA,CPU)、MacOS …

    Python 2023年8月1日
    027
  • Python数据可视化(Pandas_1_Pandas简介及创建)

    Pandas 是 Python 中的数据操纵和分析软件包。名称”Pandas”得名自计量经济学 Panel Data(面板数据)一词。Pandas 为 Py…

    Python 2023年8月19日
    027
  • 迷宫问题详解(数据结构实验)

    实验项目 2: 栈结构及其应用 实验题目: 迷宫问题求解 实验内容: 一个迷宫可以看成是由 m × n 个房间组成的矩形,迷宫内部的每个房间有 4个方向,每个方向或者有障碍(如墙)…

    Python 2023年10月20日
    020
  • 链家租房数据基本分析

    import pandas as pd lj_data = pd.read_csv(‘LJdata.csv’) #原始列名 lj_data.columns #Index([‘区域’…

    Python 2023年8月20日
    012
  • Python的Decorator 杂谈

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年8月16日
    0257
  • python猜拳小游戏

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月23日
    095
  • Django数据迁移介绍

    1.简介 迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库表结构对方式 2.基本命令 python manage.py migrate—&a…

    Python 2023年6月10日
    028
  • 抱抱脸:ChatGPT背后的算法——RLHF | 附12篇RLHF必刷论文

    文 | 卖萌酱 大家好,我是卖萌酱。 前几天,抱抱脸公司(HuggingFace)发表了一篇博客[1],详细讲解了ChatGPT背后的技术原理——RLHF。 笔者读过之后,觉得讲解…

    Python 2023年11月3日
    010
  • SO花指令还原Python脚本

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年8月9日
    0284
  • JavaWeb酒店管理系统

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年2月2日
    072
  • python如何读取数据框中的数据_如何在Python中获取数据框中特定列的均值?

    有时,可能需要获取本质上为数字的特定列的平均值。这是可以使用”均值”功能的地方。 可以将需要计算均值的列索引到数据框,并可以使用点运算符对此调用均值函数。 …

    Python 2023年8月7日
    035
  • 【机器学习】之第五章——神经网络

    第五章——神经网络 5.1、神经元模型 神经网络中 最基本的成分为神经元模型,用M-P神经元模型来表示,如下图所示: 每个神经元接收到来自(n)个其他神经元传递过来的输入信号,这些…

    Python 2023年10月28日
    06
  • 熊孩子说“你没看过奥特曼”,赶紧用Python学习一下,没想到

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2022年8月31日
    0254
  • 使用EF Core更新与修改生产数据库

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Python 2023年1月30日
    089
  • pandas使用

    https://www.runoob.com/pandas/pandas-tutorial.html 一、什么是pandas,能做什么 Pandas 是 Python 语言的一个扩…

    Python 2023年8月16日
    017
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球