1.方法一:

代码:

#python3.8
#xuguojun
#2020.1.30
#导出模块
import turtle as t
import random as r
#定义画雪
def drawsnow():
t.ht() #隐藏笔头,ht=hideturtle
t.pensize(2) #定义笔头大小
for i in range(50): #50,其实画49朵雪花
t.pencolor("white") #定义画笔颜色为白色,其实就是雪花为白色
t.pu() #提笔,pu=penup
t.setx(r.randint(-350,350)) #定义x坐标,随机从-350到350之间选择
t.sety(r.randint(1,350)) #定义y坐标,注意雪花一般在地上不会落下,所以定义是从1开始
t.pd() #落笔,pd=pendown
dens = 6 #雪花瓣数设为6
snowsize = r.randint(2,12) #定义雪花大小
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)) #转动角度 #画地面线:
def drawgroud():
t.ht() #隐藏画笔,t.hideturtle()
for i in range(r.randint(10,15)): #随机画几条地面线,但在10和15之间
#for i in range(10): #每次操作只画10条地面线
x=r.randint(-400,350)
y=r.randint(-280,-1)
t.pencolor("white")
t.pu() #提笔pu=penup
t.goto(x,y) #去这个坐标
t.pd() #落笔pd=pendown
t.fd(r.randint(40,100)) #fd=forward向前画大小,随机从40~100选 t.setup(800,600,200,200)#窗口大小和位置
t.tracer(True) #雪花和背景绘制的过程,true=就是慢慢看它画雪
t.bgcolor("lightpink") #lightpink=轻粉色,天蓝色lightblue=#B0E0E6
t.speed(0.1) #画笔的速度
drawsnow() #执行画雪
drawgroud() #执行画地面线
t.done() #完成

效果图:

2.方法二:

代码:

#python3.8
#xuguojun
#2020.1.30
#导出模块,这样导出比代码较简洁,但是注意r和后面RGB的r,所以我改为d代替R(r)
import turtle as t
import random as r
#绘制雪花
s=30 #定义30个
def snow(s):
t.ht() #ht=hideturtle,隐藏画笔和轨迹
t.speed(500) #设置画笔的速度,快
t.pensize(2) #设置笔头大小
for i in range(s):
d = r.random() #随机定义颜色
g = r.random()
b = r.random()
t.pencolor(d, g, b) #随机颜色定义,画笔的颜色,注意这里本来是rgb,但是r定义过random,所以用d代替
t.pu() #pu=penup,提笔
t.goto(r.randint(-350, 350), r.randint(1, 270)) #坐标和x和y值随机取值及范围
t.pd() #pd=pendown,落笔
dens = r.randint(8, 12) #随机定义雪花的花瓣数
snowsize = r.randint(10, 14) #随机定义雪花的大小
for _ in range(dens):
t.forward(snowsize) # 向当前画笔方向移动snowsize像素长度
t.backward(snowsize) # 向当前画笔相反方向移动snowsize像素长度
t.right(360 / dens) # 顺时针移动360 / dens度 #绘制地面线
g=50 #定义50条
def ground(g):
t.ht() #ht=hideturtle,隐藏画笔和轨迹
t.speed(500) #画笔的速度
for i in range(g):
t.pensize(r.randint(5, 10)) #随机画笔大小,从5~10选
x = r.randint(-400, 350) #x坐标轴的随机从-400到350选
y = r.randint(-280, -1)
d = -y / 280 #注意这里的r要该d
g = -y / 280 #定义随机数dgb,与y随机数挂钩
b = -y / 280
t.pencolor(d, g, b) #定义颜色,r改为d,因为r在模块导出时定义random的
t.penup() #pu=penup,提笔
t.goto(x, y) # 让画笔移动到此位置
t.pendown() # pd=pendown,落笔
t.forward(r.randint(40, 100)) # 眼当前画笔方向向前移动40~100距离,fd=forward #-----熟悉以下2中方法,启动画画------
# 方法一:主函数法
def main():
t.setup(800, 600, 500, 0) #窗口大小和位置,x=500,y=0,代表坐标
t.bgcolor("black") #背景颜色为黑色
snow(s) #代表数量
ground(g) #代表数量
t.mainloop() #循环挂起 main() #方法二 简洁法
#将方法一,注释掉,去掉下面的注释,启动方法二,即可 '''
t.setup(800, 600, 500, 0) #窗口大小和位置,x=500,y=0,代表坐标
t.bgcolor("black") #背景颜色为黑色
snow(s) #代表数量
ground(g) #代表数量
t.done() #如果没有这个,结束后自动关闭窗口,有了,就不关闭。
'''

效果图:

python-turtle-画雪花-2种方法及效果的详解的更多相关文章

  1. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  2. Python字符串连接的5种方法

    总结了一下Python字符串连接的5种方法: 加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用 "+" 来连接两个字符串: ...

  3. 用Python计算幂的两种方法,非递归和递归法

    用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...

  4. Python保留小数的几种方法

    Python保留小数的几种方法 1.使用字符串格式化 print("%.2f"%a) 2.使用round内置函数 round(num,2) 3.使用Decimal模块 from d ...

  5. Selenium2+python自动化65-js定位几种方法总结

    Selenium2+python自动化65-js定位几种方法总结   前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法 除了i ...

  6. Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解

    Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解   在swing中,基于业务的考量,会有对话框来限制用户的行为及对用户的动作进行提示. Swing中 ...

  7. 第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解

    第三百五十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解 信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行 ...

  8. 转:python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  9. 分析python程序运行时间的几种方法

    最早见过手写的,类似于下面这种: 1 import datetime 2 3 def time_1(): 4 begin = datetime.datetime.now() 5 sum = 0 6 f ...

随机推荐

  1. PHP程序员应该如何提升

    PHP程序员应该如何提升 尤其不认可W3school之类的东西,不够深度,理解不深,比起这个更建议看官方文档,中文不清楚,看英文的. 入门视频:入门视频推荐:哈佛大学公开课:构建动态网站Beginne ...

  2. 题解【洛谷P5788】【模板】单调栈

    题面 单调栈模板题. 单调栈与单调队列一样,都是维护了一段区间内的顺序. 然后--这个题用一个栈维护一下贪心就没了. 具体参考这一篇题解 #include <bits/stdc++.h> ...

  3. mysql数据库-笔记

    基本概念篇 SQL语言的分类(DDL.DML.DCL.DQL) 对应的英文全程:data (definition.manipulation.control.query)language 参考资料: h ...

  4. django 自定义url转换器

    django内置的url转换器,包括有int.str.uuid等等.但是有时候他们不能满足我们的需求,因此就需要使用自定义url转换器.自定义url转换器的五步:1.定义一个类,直接继承自object ...

  5. 拦截导弹类问题 (Codevs4888零件分组POJ1065Wooden Sticks)(LIS及其覆盖问题)

    拦截导弹 题意:求最长不上升子序列长度:求一个序列最少分成几个非增子序. 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1& ...

  6. vue中mixins的理解及应用

    vue中mixins的理解及应用 vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情 ...

  7. 解决:配置虚拟主机,重启apache,[warn] _default_ VirtualHost overlap on port 80, the first has precedence

    http://blog.csdn.net/kaizhu_qin/article/details/17506293 很多第一次配置apache的虚拟主机的时候,以为配置第一个虚拟主机完成以后,以后就不会 ...

  8. spring注解注入:<context:component-scan>以及其中的context:include-filter>和 <context:exclude-filter>的是干什么的?

    转自:https://www.cnblogs.com/vanl/p/5733655.html spring注解注入:<context:component-scan>使用说明   sprin ...

  9. MinGW dll导入导出类

    dll不仅可以导入导出函数,还可以导入导出类.这篇文章就来介绍如何将类导入dll中并导出. 首先我们建立一个名为dll.cpp的文件(又是这种破名字),里面写上: #include <iostr ...

  10. JarvisOJ - Writeup(5.31更新)

    此篇用来记录我在jarivsOJ上的一些题解,只给解题思路,不放flag Misc 0x01 You Need Python(300) 题目有两个文件,一个py文件,另一个是经过编码的key 文件ke ...