zoukankan      html  css  js  c++  java
  • Python_code_七段数码管绘制实现_happy-new-year

    效果图:

    代码如下:

    #利用七段数码管, 绘制 HAPPY NEW YEAR
    '''
    思路:
    对于常规字符,利用7段数码管的绘制规律进行绘制
    对于特殊字符,直接写出,并用相应的处理空出对应的空隙
    '''
    import turtle

    #绘制数码管间隔,就是留一点空隙
    def drawGap():
    turtle.penup()
    turtle.fd(5) #提笔前进5个像素
    return 0

    #绘制单段数码管
    def drawLine(draw):
    drawGap() #提笔前进5个像素
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap() #提笔前进5个像素
    turtle.right(90)

    #根据数字绘制七段数码管
    def drawChar(d):
    #七段数码管,共计七笔,每一个if else 代表一笔
    drawLine(True) if d in ['A','B','E','F','H','P','Y',] else drawLine(False)#向右(中间)
    drawLine(True) if d in ['A','B','H','N','U','Y',] else drawLine(False)#向下(右下)
    drawLine(True) if d in ['Y','B','C','E','L','U','Y',] else drawLine(False)#向左(最下)
    drawLine(True) if d in ['A','B','C','E','F','H','L','N','P','U',] else drawLine(False)#向上(左下)
    #四笔之后画完了下半部分的四画,此时画笔回到初始方向(向右),要想继续画上方三笔,需要将画笔逆时针旋转90度,调整至向上方向
    turtle.left(90)
    drawLine(True) if d in ['A','B','C','E','F','H','L','N','P','U','Y',]else drawLine(False)#向上(左上)
    drawLine(True) if d in ['A','B','C','E','F','N','P',] else drawLine(False)#向右(最上)
    drawLine(True) if d in ['A','B','H','N','P','U','Y',] else drawLine(False)#向下(右上)

    #以上绘制完成了一个数字,现在将画笔向右移一段距离,准备绘制下一个数字
    turtle.left(180) #因为绘制完第七笔(右上的竖)后,笔的方向是向左的,需要调至向右才可继续绘制
    turtle.penup() #抬起画笔
    #设置同一单词中不同字母之间的间隔
    turtle.fd(20)

    #获取要输出的数字
    def drawStr(str1):
    turtle.pencolor("red") #初始时画笔的颜色
    for i in str1:
    #每个单词之间空格部分的处理
    if i == range(0,10):
    turtle.write(' ',font=("Arial",18,"normal"))

    #特殊字符的处理
    if i in['D','G','I','J','K','M','O','Q','R','S','T','V','W','X','Z']:
    #先将画笔从规定位置下移75个像素
    turtle.right(90)
    turtle.fd(75)
    #开始写字母 W
    turtle.write(i,font=("Arial Narrow Regular",112,"normal"))
    #绘制完成后,将位置初始化,在进行后续字母的绘制
    turtle.fd(-75)
    turtle.left(90)
    #向右移动一段距离,将写出的字母的位置空出来
    turtle.fd(75)

    #尝试改变画笔的颜色
    else:
    if i == '1':
    turtle.pencolor("white")
          if i == '2':
    turtle.pencolor("brown")
          drawChar(i)

    def main():
      #turtle.screensize(1250,550,"pink") #画布的宽、高和背景颜色(关键是可以填充画布的颜色)
    turtle.setup(1200,600,50,100) #画布的宽、高,相对于屏幕的起始位置(关键是可以设置画布的起始位置)
    turtle.bgcolor('pink') #设置画布的背景颜色
      #turtle.setup12参数:画布的宽、高(整数时为像素,小数时为占据屏幕大小的比例)
      #turtle.setup34参数:画布窗口左上角(相对于屏幕)的X坐标、Y坐标(如果为空表示画布窗口位于屏幕正中心)
      # 控制绘制速度
    turtle.pensize(5) #设置画笔的宽度
    turtle.speed(0) #设置画笔移动速度,范围[0,10],数字越大速度越快
    turtle.penup() #抬起画笔
    turtle.fd(-500) #向当前画笔反方向移动500个像素(初始时向右)
    turtle.hideturtle() #隐藏画笔
      '''
    #手动输入HAPPY1NEW2YEAR后执行程序
    #理论上完善drawChar 函数部分的26个英文字母中可用数码管表示部分之后,可以显示任意输入的字符
    str = input("请输入所要绘制英文句子(按下回车结束输入,程序需要响应一会):")
    drawStr(str)
    '''
      print("提示:按下回车开始绘制(程序需要响应一会)")
      input("")
      drawStr("HAPPY1NEW2YEAR") #自定义函数进行文字绘制

    turtle.done()

    main()
  • 相关阅读:
    重新开始学习javase_对象的摧毁
    昨天一日和彭讨论post请求数据的问题
    昨天在公司加班,上午好像就是弄一个ftp的linux服务问题
    昨天有是发现一个新的技术问题
    昨天下午快要下班的时候让他们东软测试
    昨天也没有和家里通话,把时间给了一位同事
    早上8:45到达
    又是一个月初
    今天是下雨天
    从每天开始在工作上才算有点事情
  • 原文地址:https://www.cnblogs.com/lyj0123/p/11243426.html
Copyright © 2011-2022 走看看