首页 > 编程语言 >【Python】【完整代码】张万森,下雪了,我想你~

【Python】【完整代码】张万森,下雪了,我想你~

时间:2024-03-31 13:58:22浏览次数:19  
标签:turtle Python 下雪 self tu 雪花 color ra 张万森

目录

1. 实现效果

2. 完整代码

3. 代码分析


         有人说,张万森下雪了的意思是我想你了;也有人说,张万森下雪了就是表达一个男孩对于暗恋女孩的感受。而我觉得“张万森 下雪了”是一个含蓄的告白,小伙伴们觉得呢 ~ 本篇文章将用python画出“张万森,下雪了”,欢迎围观!

1. 实现效果

张万森,下雪了

2. 完整代码

#!/usr/bin/env python3
# _*_ coding : UTF-8 _*_
# 开发人员 :jly
# 开发时间 :2024/03/28 19:52:47
# 文件名称 :python_张万森,下雪了.py
# 开发工具 :Visual Studio Code

import turtle as tu
import random as ra
import time
tu.setup(1.0, 1.0)
tu.bgcolor('black')  #设置画布颜色
tu.title("雪花")
t = tu.Pen()
t.ht()               #隐藏画笔
colors = ['white']   #雪花的颜色列表
class Snow():    #雪花类
    def __init__(self):
        self.r = ra.uniform(2,4)       #雪花的半径
        self.x = ra.randint(-1000,1000)   #雪花的横坐标
        self.y = ra.randint(500,1000)     #雪花的纵坐标
        self.speed = ra.randint(5,20)     #雪花移动速度
        self.color = ra.choice(colors)    #雪花的颜色
        self.outline = 2                  #雪花的大小
    # def snow(self):
    #     t.pensize(self.outline)    #雪花的大小
    #     t.penup()                  #提笔
    #     t.goto(self.x,self.y)      #随机位置
    #     t.pendown()                #落笔
    #     t.color(self.color)        #雪花颜色
    #     t.begin_fill()
    #     t.fillcolor("white")
    #     t.circle(self.r)
    #     t.end_fill()
    def snow(self):                #画每个雪花
        x=self.r                   #雪花的半径
        t.pensize(self.outline)    #雪花的大小
        t.penup()                  #提笔
        t.goto(self.x,self.y)      #随机位置
        t.pendown()                #落笔
        t.color(self.color)        #雪花颜色
        for i in range(6):        #循环画六个雪花瓣
            t.forward(x*5)
            t.backward(x*2)
            t.left(60)
            t.forward(x*2)
            t.backward(x*2)
            t.right(120)
            t.forward(x*2)
            t.backward(x*2)
            t.left(60)
            t.backward(x*3)
            t.right(60)
    def move(self):                    #雪花移动函数
        if self.y >= -500:            #当雪花还在画布中时
            self.y -= self.speed     #设置上下移动速度
        else:                        #当雪花漂出了画布时,重新生成一个雪花
            self.r = ra.uniform(2,4)
            self.x = ra.randint(-1000,1000)
            self.y = 500
            self.speed = ra.randint(5,20)
            self.color = ra.choice(colors)
            self.outline = 2
Snows = []            #用列表保存所有雪花
for i in range(595):
    Snows.append(Snow())
t.penup()
t.goto(0, 0)
t.pendown()
t.pencolor("white")
t.write("张万森", align="center", font=("Comic Sans MS", 66, "bold"))
time.sleep(1)
t.clear()
time.sleep(1)
t.write("下雪了", align="center", font=("Comic Sans MS", 66, "bold"))
time.sleep(1)
t.clear()
time.sleep(1)
while True:           #开始绘制
    tu.tracer(0)
    t.clear()
    t.penup()
    t.goto(0,0)
    t.pendown()
    t.write("我 好 想 你", align="center", font=("Comic Sans MS", 66, "bold"))
    for i in range(199):    #50个漂浮的雪花
        Snows[i].move()
        Snows[i].snow()
    tu.update()
tu.mainloop()

3. 代码分析

图片

Turtle入门

图片

Python的turtle模块是一个绘图模块,可以创建各种形状和图案。使用Python的turtle模块进行绘图可以很简单且有趣。在Python中导入turtle模块需要使用以下代码:

import turtle

图片

接下来我们来看一些基本的函数:

  • turtle.forward(distance):向前移动distance个单位长度

  • turtle.backward(distance):向后移动distance个单位长度

  • turtle.right(angle):向右转angle度

  • turtle.left(angle):向左转angle度

  • turtle.penup():抬起画笔,移动时不绘制图形

  • turtle.pendown():放下画笔,移动时绘制图形

  • turtle.pensize(width):设置画笔宽度

  • turtle.pencolor(color):设置画笔颜色

  • turtle.fillcolor(color):设置填充颜色

  • turtle.begin_fill():开始填充

  • turtle.end_fill():结束填充

下面是一个简单的例子:使用turtle绘制一个正方形


import turtle
# 创建一个画布
win = turtle.Screen()
# 设置画笔属性
turtle.pensize(4)
turtle.pencolor('blue')
# 绘制正方形
for i in range(4):
    turtle.forward(100)
    turtle.right(90)
# 关闭画布
win.exitonclick()

图片

运行以上代码,将在屏幕上绘制一个蓝色正方形。

除了以上的基本函数,我们还可以使用turtle.circle()函数来绘制圆。

turtle.circle(radius, extent=None, steps=None):绘制圆形,radius为半径,extent为角度(可选参数),steps为边数(可选参数)

下面是一个绘制不同大小和颜色圆形的例子:


import turtle
# 创建一个画布
win = turtle.Screen()
# 绘制不同大小和颜色的圆形
turtle.pensize(4)
turtle.pencolor('red')
turtle.fillcolor('yellow')
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.penup()
turtle.goto(0, -200)
turtle.pendown()
turtle.pencolor('green')
turtle.fillcolor('blue')
turtle.begin_fill()
turtle.circle(80)
turtle.end_fill()
# 关闭画布
win.exitonclick()

运行以上代码,将在屏幕上绘制一个黄色填充的红色圆和一个蓝色填充的绿色圆。

以上是一些基本的turtle函数介绍和简单的例子,可以帮助你快速入门turtle的绘图方法。同时,你还可以使用其他的函数和参数来创建更加复杂的图案和形状。

标签:turtle,Python,下雪,self,tu,雪花,color,ra,张万森
From: https://blog.csdn.net/jly_20220520/article/details/137122637

相关文章

  • Python面向对象多态实现原理及代码实例
    Python面向对象编程中的多态性表示的是同一种操作可以在不同的对象上有不同的表现。多态性指的是可以无视对象的具体类型,而直接调用某个方法,这个方法会根据对象的实际类型而进行不同的操作。这是通过继承和重写方法实现的。在Python中,任何类都有一个公共的祖先:object类。Python中......
  • Python for Everybody
    Tuples   Exercise1:Reviseapreviousprogramasfollows:Readandparsethe“From”linesandpullouttheaddressesfromtheline.Countthenumberofmessagesfromeachpersonusingadictionary.Afterallthedatahasbeenread,printthepersonwitht......
  • 矩阵匹配【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-矩阵匹配从一个NM(N<=M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。输入描述:输入矩阵要求:1<=K<=N<=M<=150输入格式:NMKNM矩阵输出描述:N*M的矩阵中可以选出M!/N!种组合数组,每个组合数组中第K大的数中的......
  • 文本统计分析【华为OD机试JAVA&Python&C++&JS题解】
    一.题目-文本统计分析有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量规则如下文本以";“分隔,最后一条可以没有”;",但空文本不能算语句,比如"COMMANDA;;"只能算一条语句.注意,无字符/空白字符/制表符都算作"空"文本文本可以跨行,比如下面,......
  • Python之Opencv进阶教程(2):统计图片灰度级别的像素数量
    1、什么是灰度像素数量在OpenCV中,可以使用**cv2.calcHist()**函数来计算图像的直方图。直方图是一种图形统计表,用于表示图像中每个灰度级别(或颜色通道)的像素数量或密度分布。以下是一个示例代码,演示了如何使用OpenCV计算和绘制图像的直方图:2、代码importcv2ascvimpor......
  • Python之Opencv进阶教程(1):图片模糊
    1、Opencv提供了多种模糊图片的方法加载原始未经模糊处理的图片importcv2ascvimg=cv.imread('../Resources/Photos/girl.jpg')cv.imshow('girl',img)1.1平均值关键代码#Averaging平均值a......
  • Python之Opencv教程(5):识别视频中的人脸
    1、识别效果2、识别代码importcv2ascvdefface_detect_demo(img):#将图片灰度gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#加载特征数据face_detector=cv.CascadeClassifier("data//haarcascade_frontalface_alt.xml")fac......
  • Python装饰器实战:打造高效性能计时工具
    在数据分析工作中,针对百万,千万级别的数据进行分析是常有的事情,因此,分析代码性能的重要性不容忽视,能够有一个方便快速的测试函数性能的方法,对于我们快速发现性能瓶颈,及时优化,提高项目的开发效率至关重要。本文介绍如何通过Python装饰器来实现性能计时工具,帮助我们在不改变现有代码......
  • Python 潮流周刊第 44 期(摘要)+ 赠书 5 本《明解Python算法与数据结构》
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-03-30-weekly特别提醒:本期赠书5......
  • 6-92 链表基本操作(Python语言描述)
    本题要求在给出的链节点类、和单链表类部分代码的情况下,编写好基本操作的各种python3代码实现,最后调用测试代码检验。函数接口定义:已实现的链节点类、和单链表类部分代码。如下:classSingleNode(object):"""单链表的结点"""def__init__(self,item):#_i......