python画两个科赫雪花_Python 绘制科赫雪花的简单实现

成果展示 ?

简单的跑了一下程序,结果如下,这个画图的速度已经是最快了 ??? :

源代码 ?

源码如下,这是最简单的实现,大佬勿喷 ?。"""

@author: shoo Wang

@contact: wangsuoo@foxmail.com

@file: demo01.py

@time: 2020/4/16 0016

"""

import turtle

import random

'''

雪花位置随机

雪花个数随机[2,10]之间

雪花大小随机

'''

# 递归的画科赫曲线,控制阶数和角度

def koch(size, n):

if n == 0:

turtle.fd(size)

else:

for angle in [0, 60, -120, 60]:

turtle.left(angle)

koch(size / 3, n - 1)

# 控制雪花的个数、位置; 此函数为核心函数!

def control_num(n):

# 一个随机函数控制随机位置和大小,参数为雪花的个数

for i in range(n):

# 隐藏画笔

turtle.hideturtle()

# 开始填充背景颜色

turtle.begin_fill()

turtle.color('white')

# 生成随机数,控制 x 轴 与 y 轴

num1 = random.randint(-100, 100)

num2 = random.randint(-100, 100)

num3 = random.randint(20, 80)

# 控制位置随机

control_locate(num1 * 3, num2 * 3)

# 控制大小和阶数

control_size(num3, 3)

turtle.end_fill()

# 设置画笔的属性

def pen_attr():

# 设置背景颜色

turtle.bgcolor('blue')

# 设置画笔的颜色和速度等属性, (吐槽一下速度真的慢,最快就是10了

turtle.pen({'pensize': 1, 'shown': True, 'resizemode': 'auto', 'outline': 1,

'pencolor': 'white', 'pendown': False, 'fillcolor': 'white',

'speed': 10})

# 控制每一阶的 大小、转向

def control_size(size, level, angle = 120):

# 画第一部分

koch(size, level)

turtle.right(angle)

# 画第二部分

koch(size, level)

turtle.right(angle)

# 画第三部分

koch(size, level)

# 控制位置随机

def control_locate(resetX, resetY):

# turtle.setup(startX, startY)

turtle.penup()

turtle.goto(resetX, resetY)

turtle.pendown()

# 主函数

def main():

"""

总体控制画布的位置,入口函数,调用其他函数

"""

# 控制个数, 这里是随机,[2,10]

num = random.randint(2, 10)

control_num(num)

turtle.done()

# 函数调用,启动!!!

main()

已知 BUG ?雪花有重叠,不过我觉得这也正常,毕竟现实中下雪也会有重叠 ?;

有的雪花会出界,可以简单的通过控制边界的大小和雪花随机出现的位置避免,也可以在循环的时候多加一条判断,如果出界就 continue;总结一下,练习了函数的运用以及一些算法的头脑风暴,复习了海龟绘图以及 random 库函数的调用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值