Python Turtle 画图:黑洞里的繁星(附源代码)

                    

            仰望星空,总想看到不一样的星辰。本文就介绍如何利用Turtle 绘画浩瀚宇宙黑洞里的繁星,Turtle是python一个简单好用的绘图包,它可以通过设计坐标来实时控制绘图,易学易用。让我们一起去看星星,体现宇宙与计算机之美。

目录

前言

一、Python Turtle是什么?

二、绘图步骤

1.引入库

 2. 创建画板,画笔和颜色

3.绘画大星星

4. 绘画小繁星

5. 画黑洞 

 三 、黑洞里的繁星效果图

 四、附上完整源代码


前言

  "天高地迥,觉宇宙之无穷" 人在宇宙,好像太空中一粒沙子那么渺小。 仰望星空,总想看到不一样的星辰。本文就介绍如何利用Python Turtle 绘画浩瀚宇宙黑洞里的繁星,体现宇宙与计算机之美,让我们一起去看星星。

一、Python Turtle是什么?

turtle是python一个简单好用的绘图包,它可以通过设计坐标来实时控制绘图。安装很简单,一行命令:

pip install turtle

二、绘图步骤

1.引入库

import turtle as t
import random 

 2. 创建画板,画笔和颜色

t.setup(800,600)
t.colormode(255)
t.bgcolor('lavender')
t.speed(0)
colorlist=['silver','lightgoldenrodyellow','floralwhite',
           'slategrey','lightsteelblue','pink']
colorback=['lavender','lightsteelblue']
randomColor=['pink','lavender','lightsteelblue','silver',
             'lightgoldenrodyellow','floralwhite','slategrey']
angle=60

3.绘画大星星

3.1 随机效果图如下: 

 3.2 源代码如下:

#画大星星
def drawFiveStar (x,y,angle,step,color):
    t.penup()
    t.goto(x,y)
    t.left(angle)
    t.pendown()
    t.color(color)
    t.fillcolor(color)
    t.begin_fill()
    for x in range(5):
        t.forward(step)
        t.right(144)
    t.end_fill()
for i in range(50):
    step=random.randint(20,40)
    x=random.randint(-400,400)
    y=random.randint(0,300)
    angle=random.randint(0,36)*10
    color=random.choice(colorlist)
    drawFiveStar(x,y,angle,step,color)

4. 绘画小繁星

4.1 随机效果图如下: 

  4.2 源代码如下:

#画小星星
for j in range (200):
    back1 =random.choice(colorback)
    t.bgcolor(back1)
    temp1 =random.choice(colorlist)
    t.fillcolor(temp1)
    t.color(temp1)
    t.begin_fill()
    temp2 =random.randint(5,15)
    li2= [5,7,9]
    temp3= random.choice(li2)
    for i in range (temp3):
       t.forward(temp2)
       t.left(180-180/temp3)
    t.end_fill()
    t.hideturtle()
    t.penup()
    for k in range(2):
         t.left(random.randint(10,120))
         t.forward(random.randint(10,50))

5. 画黑洞 

 5.1 随机效果图如下:

5.2 源代码如下: 

#画黑洞
for i in range(600):
    t.color(randomColor[i%6])
    t.fd(i)
    t.rt(angle+1)

 黑洞里的繁星效果图

随机效果展示

 附上完整源代码

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 13 09:03:32 2022

@author: Margaret Wong
"""

import turtle as t
import random 
t.setup(800,600)
t.colormode(255)
t.bgcolor('lavender')
t.speed(0)
colorlist=['silver','lightgoldenrodyellow','floralwhite',
           'slategrey','lightsteelblue','pink']
colorback=['lavender','lightsteelblue']
randomColor=['pink','lavender','lightsteelblue','silver',
             'lightgoldenrodyellow','floralwhite','slategrey']
angle=60
#画大星星
def drawFiveStar (x,y,angle,step,color):
    t.penup()
    t.goto(x,y)
    t.left(angle)
    t.pendown()
    t.color(color)
    t.fillcolor(color)
    t.begin_fill()
    for x in range(5):
        t.forward(step)
        t.right(144)
    t.end_fill()
for i in range(50):
    step=random.randint(20,40)
    x=random.randint(-400,400)
    y=random.randint(0,300)
    angle=random.randint(0,36)*10
    color=random.choice(colorlist)
    drawFiveStar(x,y,angle,step,color)
t.up()
t.goto(0,0)
t.pendown()
#画小星星
for j in range (200):
    back1 =random.choice(colorback)
    t.bgcolor(back1)
    temp1 =random.choice(colorlist)
    t.fillcolor(temp1)
    t.color(temp1)
    t.begin_fill()
    temp2 =random.randint(5,15)
    li2= [5,7,9]
    temp3= random.choice(li2)
    for i in range (temp3):
       t.forward(temp2)
       t.left(180-180/temp3)
    t.end_fill()
    t.hideturtle()
    t.penup()
    for k in range(2):
         t.left(random.randint(10,120))
         t.forward(random.randint(10,50))
t.up()
t.goto(0,0)
t.pendown()
t.color('purple')
t.goto(0,0)
t.down()
t.bgcolor('black')
#画黑洞
for i in range(600):
    t.color(randomColor[i%6])
    t.fd(i)
    t.rt(angle+1)
t.penup()
t.color('white')
t.goto(0,0)
t.down()
t.done()

 总结

以上就是今天要讲的内容,本文简单介绍了turtle的使用实例,展示如何使用turtle函数绘画不一样的美。

### 使用Python Turtle库进行创意绘图 #### 创建基本环境设置 为了确保Turtle模块能够正常工作,需要先创建一个屏幕实例以及一个画笔实例。这一步骤对于后续所有的绘制操作都是必要的。 ```python import turtle screen = turtle.Screen() pen = turtle.Turtle() ``` #### 设置背景与颜色配置 通过调整背景颜色和线条的颜色来增强视觉效果,可以使得最终的作品更加吸引人。 ```python screen.bgcolor("lightblue") # 背景设为浅蓝色 pen.color("darkgreen", "red") # 笔触颜色设定为深绿色,填充色为红色 ``` #### 实现简单形状——五角星 下面是一个简单的例子,展示如何利用循环结构快速构建一个多边形图案,在这是五角星[^1]。 ```python def draw_star(size): for _ in range(5): pen.forward(size) pen.right(144) draw_star(100) # 绘制大小为100单位长度的星星 ``` #### 构建复杂图形——分形树 更进一步的例子展示了递归函数的应用,用于模拟自然界中的树木生长模式。此代码片段来源于已有的樱桃树案例研究[^3]。 ```python def fractal_tree(branch_len, levels=7): if branch_len > 5: pen.forward(branch_len) pen.right(20) fractal_tree(branch_len - 15, levels-1) pen.left(40) fractal_tree(branch_len - 15, levels-1) pen.right(20) pen.backward(branch_len) pen.left(90) pen.up() pen.backward(200) pen.down() fractal_tree(100) ``` #### 定义完成后的清理动作 当所有绘图完成后,记得隐藏海龟指针,并保持窗口打开直到用户关闭为止。 ```python pen.hideturtle() turtle.done() ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值