• 小学生Python编程 —— 欢乐钢琴


    孩子的又一作品,欢乐钢琴

    from pgzrun import *

    WIDTH = 960
    HEIGHT = 720

    #{
    o = 0
    name = "s"
    song = Actor(name + str(o) + ".png", [480, 180])
    a_press = False
    #动效函数
    def change():
        global o
        song.image = name + str(o) + ".png"
        o = o + 1
        if o > 39:
            o = 0
    #}
    bg = Actor("bg.png")
    def draw():
        bg.draw()
        #{
        song.draw()#}
        
    def play(n):
        music.play_once(n + ".mp3")
        bg.image = n + ".png"

    note = []
    def on_key_down():
        
        if keyboard.k_1 == True:
            play("1")
            note.append("1")
        elif keyboard.k_2 == True:
            play("2")
            note.append("2")
        #{
        elif keyboard.k_3 == True:
            play("3")
            note.append("3")
        elif keyboard.k_4 == True:
            play("4")
            note.append("4")
        elif keyboard.k_5 == True:
            play("5")
            note.append("5")
        elif keyboard.k_6 == True:
            play("6")
            note.append("6")
        elif keyboard.k_7 == True:
            play("7")
            note.append("7")
        elif keyboard.k_8 == True:
            play("8")
            note.append("8")
        #}
        
        elif keyboard.a == True:
            clock.schedule_interval(play_again, 0.6)
           
            #{
            #按下a后,调用动效函数change
            global o, a_press, name
            o = 0
            a_press = True
            name = "dance"
            clock.schedule_interval(change, 0.03)
            #}
            
        elif keyboard.s == True:
            clock.unschedule(play_again)
        
        #按x键保存
        elif keyboard.x == True:
            get_music("my_music") #可填入自己取的音乐名

    def on_key_up():
        bg.image = "bg.png"

    num = 0
    def play_again():
        global num
        n = note[num]
        play(n)
        num = num + 1
        
        if num > len(note) -1:
            num = 0
        
    #{ 
    # 鼠标点击曲谱,切换
    def on_mouse_down(pos):
        global o
        if song.collidepoint(pos):
            if not a_press:
                o = o + 1
                if o > 24:
                    o = 0
                song.image = name + str(o) + ".png"
                
    #按弹奏顺序读取单个音符文件,写入命名为name的文件            
    def get_music(name):
        f_read = bytes()
        for n in note:
            with open(f"music/m{n}.mp3","rb") as f1:
                f_read += f1.read()
            with open(f"music/{name}.mp3","wb") as f2:
                f2.write(f_read)
    #}

    go()

  • 相关阅读:
    多用户对应多租户解决方案
    ChinaSoft 论坛巡礼 | 安全攸关软件的智能化开发方法论坛
    陆拾捌- 如何通过数据影响决策(三)
    Java多线程之线程池
    qt day6 人脸识别
    哈工大校园网显示IP地址错误连接不上
    基于VHDL的专业略缩词
    【吃瓜之旅】第三章吃瓜学习
    忘记Linux 7.x 宝塔面板密码的解决方案
    性能测试-如何进行监控设计
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/126162617