• 小学生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()

  • 相关阅读:
    RabbitMQ消息的重复消费问题
    js基础-数据类型检测
    中国的消费不足及其成因-中国视角下的宏观经济
    vue 使用iframe嵌套pdf在h5移动端浏览器中打开的时候自动下载
    我国SaaS产业的发展趋势与路径
    rsync远程同步
    原生js小方法的封装
    深入浅出java.io.File
    Oracle LiveLabs实验:Manage Database Instance and Memory for Oracle Database 21c
    基于java的高速公路收费系统 计算机毕业设计
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/126162617