用OOP的思路绘制简单的七位数码管

项目场景:

刚刚学完七段数位管绘制的实例,突发奇想,想能不能用面对对象编程的思想绘制数码管,于是就有了这条博客


问题难点:

这段问题里的难点是对类方法的定义,具体有多少中方法需要自己在绘制过程中发现。

class Line:
    def line1(self):
        turtle.fd(100)
        turtle.right(90)

    def line2(self):
        turtle.seth(90)
        turtle.fd(100)
        turtle.right(90)

    def line3(self):
        turtle.penup()
        turtle.seth(0)
        turtle.fd(14)
        turtle.pendown()

    def line4(self):
        turtle.penup()

    def line5(self):
        turtle.pendown()

对随机颜色的模块的编写:

随机颜色的实现不算难,只是有一个注意的地方:python里的rgb颜色参数模式默认是0-1 用turtle的话需要用turtle.colormode(255) 语句把模式转换成0-255。

turtle.colormode(255)
def colorchoose():
    a, b, c = random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256)
    color = (a, b, c)
    return color

完整代码以及运行结果:

import turtle
import time
import random
#随机颜色的模块#
turtle.colormode(255)
def colorchoose():
    a, b, c = random.randrange(0, 256), random.randrange(0, 256), random.randrange(0, 256)
    color = (a, b, c)
    return color
#准备
turtle.setup(1000,600)
turtle.pensize(4)
turtle.penup()
turtle.goto(-475,0)
turtle.seth(0)
turtle.pendown()
#定义一个包含图标可能的运动行为的方法的类
class Line:
    def line1(self):
        turtle.fd(100)
        turtle.right(90)

    def line2(self):
        turtle.seth(90)
        turtle.fd(100)
        turtle.right(90)

    def line3(self):
        turtle.penup()
        turtle.seth(0)
        turtle.fd(14)
        turtle.pendown()

    def line4(self):
        turtle.penup()

    def line5(self):
        turtle.pendown()
a = Line()#实例化这个类
t1 = time.gmtime()  #获取计算机可识别的当前的时间
time = time.strftime('%Y%m%d',t1)  #将时间转化为人类可识别的时间
for i in range(8):
    turtle.pencolor(colorchoose())
    (a.line5(),a.line1())if int(time[i]) in [2,3,4,5,6,8,9] else (a.line4(),a.line1())
    (a.line5(),a.line1())if int(time[i]) in [0,1,3,4,5,6,7,8,9] else(a.line4(),a.line1())
    (a.line5(),a.line1())if int(time[i]) in [0,2,3,5,6,8,9] else(a.line4(),a.line1())
    (a.line5(),a.line1())if int(time[i]) in [0,2,6,8] else(a.line4(),a.line1())
    (a.line5(),a.line2())if int(time[i]) in [0,4,5,6,8,9] else(a.line4(),a.line2())
    (a.line5(),a.line1())if int(time[i]) in [0,2,3,5,6,7,8,9] else(a.line4(),a.line1())
    (a.line5(),a.line1())if int(time[i]) in [0,1,2,3,4,6,7,8,9] else(a.line4(),a.line1())
    a.line3()
'''通过在循环中不断调用类中的方法达到绘制时间数位管的效果'''

turtle.done()

用OOP的思路绘制简单的七位数码管_第1张图片

 

 
  

说明是在2022年11月30日绘制的 

你可能感兴趣的:(python,开发语言)