首页 > 移动平台 > 详细

Python_code_七段数码管绘制实现_happy-new-year

时间:2019-07-25 12:48:32      阅读:151      评论:0      收藏:0      [点我收藏+]

效果图:

技术分享图片

 

 

 

 

 

 

 

 

代码如下:

#利用七段数码管, 绘制 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()

Python_code_七段数码管绘制实现_happy-new-year

原文:https://www.cnblogs.com/lyj0123/p/11243426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!