实例7:七段数码管绘制

上一篇写道:

使用保留字def定义函数

lambda定义匿名函数

电子表,交通路口常见七段数码管


turtle绘图体系绘制七段数码管

七段数码管它是有自己的固定顺序的 

我们需要考虑每次绘制完向前移动的距离

就有了下一步

 

步骤三:获取系统时间,绘制七段数码管

使用time库获得系统当前时间

增加年月日标记

年月日颜色不同

import turtle
import time
def drawGap():#绘制数码管间隔,在绘制线之前和之后分别增加一些小的像素作为间隔
    turtle.penup()
    turtle.fd(4)#嵩天老师的代码写的是5,放到我的代码中出不来效果,改了一下,这会效果挺满意的
def drawLine(draw): #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(digit):#根据数字绘制七段数码管 ,根据参数digit来决定如何绘制对应的函数,这个digit是一个数字,它的取值范围是0到9也就是整数
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False) #这条语句表示0,1,7的第一条线段不需要被绘制,像8这个数字每条线都需要画出来,可见后面的语句中都含有8
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()#为绘制后续数字确定位置
    turtle.fd(20)#为绘制后续数字确定位置
def drawDate(date):#获得要输入的数字,drawDate是将一串字符串拆分成一个个字符的函数(data为日期,格式‘%Y-%m=%d+’)
    turtle.pencolor("magenta")#这个洋红色好像紫色呀
    for i in date:
        if i =='-':
            turtle.write('年',font=("Arial",18,"normal")) #turtle中使用turtle.write函数去绘制一个具体的汉字(这个函数自己应该去学习学习学习)
            turtle.pencolor("gold")
            turtle.fd(40)
        elif i =='=':
            turtle.write('月',font=("Arial",18,"normal"))
            turtle.pencolor ("purple")#这个紫色太紫了呵呵呵,是有区分的
            turtle.fd(40)
        elif i =='+':
             turtle.write('日',font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i)) #通过eval()函数将数字变为整数
     
def main():#定义一个主函数main,这个main设定了当前画布的大小,
    turtle.setup(800,350,200,200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
  #  drawDate('20230102')#通过调用函数drawDate参数给main赋予一个参数
    turtle.hideturtle()
    turtle.done()
main()

 


turtle库是我们学的第一个标准库

但之前没整理这里用到了

整理一下方便理解

turtle的绘图窗体

turtle的一个画布空间最小单位是像素

比如绘制一个100长的直线

指的是100像素长的直线

turtle.setup(width,height,startx,starty) #setup()设置窗体大小及位置,width,height(指窗体本身的宽度和高度)startx,starty(指的是窗子起始点的坐标<左上角>)

#setup()不是必须的,四个参数中后两个可选


turtle.setup(800,400,0,0) #指的是我们生成的窗体它的宽度是800,高是400,窗体的左上角就在电脑屏幕的左上角

turtle.setup(800,400) #宽度是800,高是400,由于没有指定它左上角在屏幕中的位置,系统会默认该窗口在屏幕的正中心

turtle空间坐标体系

在turtle的窗体内部的空间坐标体系

包括绝对坐标和海龟坐标

绝对坐标

是turtle最开始在画布的正中心

正中心的坐标是(0,0) 

海龟的运行方向向着画布的右侧

整个的窗体的右方向是x轴

上方向是y轴

由此构成了一个绝对坐标系

这里有一个很重要的函数叫goto

海龟坐标

对于海龟来讲它的当前行进方向

无论这个方向是朝哪个方向的

它都叫前进方向

反方向是后退方向

海龟运行的左侧叫做左侧方向

右侧叫做右侧方向

#海龟坐标
turtle.fd(d) #指的是向海龟的正前方向运行
turtle.bk(d) #bk表示向海龟的反方向运行
turtle.circle(r,angle)#表示以海龟当前位置,左侧的某一个点为圆心,进行曲线运动

 turtle角度坐标体系

包括绝对角度和海龟角度

绝对坐标下的叫绝对角度

正方向向左转

(0°,90°,180°,270°,360°)

负方向向右转

(0°,-90°,-180°,-270°,-360°)

和数学上是一致的

#绝对角度
turtle.seth(angle) #seth()改变海龟行进方向,只改变方向但不进行,angle为绝对度数

turtle.seth(45) #让海龟的运行方向朝向45°方向
turtle.seth(-135) #让海龟的运行方向朝向反向的-135°方向

#如果在这样的方位中进一步的使用turtle.fd(),它会朝着当前设定的方向直线运行

海龟坐标下的叫海龟角度

#海龟角度
turtle提供了turtle.left(angle), turtle.right(angle)这两个函数,分别让当前的海龟向左或者向右去改变运行方向

 这个角度我是弄不清楚了呜呜呜


RGB指红蓝绿三中颜色构成万物色

覆盖视力所能感知的所有颜色

RGB每色取值范围0-255整数或0-1小数

RGB色彩体系

英文名称RGB整数值RGB小数值中文名称
white255,255,2551,1,1白色
yellow255,255,01,1,0黄色
magenta255,0,2551,0,1洋红
cyan0,255,2550,1,1青色
blue0,0,2550,0,1蓝色
black0,0,00,0,0黑色
seashell255,245,2381,0.96,0.93海贝色
gold255,215,01,0.84,0金色
pink255,192,2031,0.75,0.80粉色
brown165,42,420.65,0.16,0.16棕色
purple160,32,2400.63,0.13,0.94紫色
tomato255,99,711,0.39,0.28番茄色

turtle库默认使用

RGB的小数值来表示颜色

可以切换为整数值来表示颜色

turtle.colormode(mode)
1.0:RGB小数值模式
255:RGB整数值模式
#turtle.colormode(1.0) ,在之后修改颜色时,需要使用RGB小数值
#turtle.colormode(255) ,在之后修改颜色时,需要使用RGB整数值

 turtle画笔控制函数

penup()   抬起画笔,海龟在飞行     
 turtle.penup()  别名 turtle.pu()
pendown()  画笔落下,海龟在爬行 
 turtle.pendown() 别名turtle.pd()
pensize()  设置画笔宽度的 
 turtle.pensize(width) 别名 turtle.width(width)
pencolor() 修改画笔颜色的函数
turtle.pencolor(color)  color为颜色字符串或r,g,b值

pencolor中color参数可以有三种形式

颜色字符串  :turtle.pencolor("purple")
purple是字符串形式而且是小写
RGB的小数值:turtle.pencolor(0.63,0.13,0.94)
RGB的元组值:turtle.pencolor((0.63,0.13,0.94))

turtle运动控制函数

控制海龟行进:走直线&走曲线

turtle.forward(d) 别名 turtle.fd(d)   向前行进,海龟走直线
d:行进距离,可以为负数(单位是像素)
turtle.circle(r,extent=None)  根据半径r绘制extent角度的弧形
r:默认圆心在海龟左侧r距离的位置
extent:绘制角度,默认是360度整圆
turtle.circle(100) #指的是在海龟当前位置上,以100像素为半径绘制一个圆形,因为没有给出第二个参数,默认画出整个圆形


turtle.circle(-100,90)#圆心在海龟的右侧,以100像素为半径,绘制的弧度是90度,形成1/4个弧形

方向控制函数

控制海龟面对方向:绝对角度&海归角度

turtle.setheading(angle)  别名turtle.seth(angle) 改变行进方向,海龟走角度
angle:改变行进方向,海龟走角度
#绝对坐标
turtle.seth(45)#表名将海龟的方向转向为绝对坐标系中的45度方向
turtle.seth(-135)#表名将海龟的方向转向为绝对坐标系中的-135度方向
turtle.left(angle)  海龟向左转
turtle.right(angle) 海龟向右转
angle:在海龟当前行进方向上旋转的角度

这篇拖了好久我觉得

希望大家都有个快快乐乐的学习心态

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据的小数据孩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值