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

  • 相关阅读:
    玩一玩 Ubuntu 下的 VSCode 编程
    兆易创新GD32 (四)FreeRTOS 移植 与 CMSIS OS2
    1.wifi开发,wifi连接初次连接电脑没有识别,如何向esp8266中烧写代码,共享文件夹的创建
    RabbitMq(集群搭建)
    产品设计:如何准确定位设计风格?
    halcon 2D模板匹配 3D
    Docker高级篇之Docker微服务实战
    Adobe推出AI音乐创作工具原型;大型语言模型对编程的影响有限?
    高级端点保护 (AEP) 简介
    Android学习笔记 17. RecyclerView
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/126162617