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

  • 相关阅读:
    Django使用mysqlclient服务连接并写入数据库
    【面试:并发篇39:多线程:线程池】ThreadPoolExecutor类-提交、停止
    接口测试实战 | Android 高版本无法抓取 HTTPS,怎么办?
    Spring Boot Redis Cache 序列化配置
    leetcode:反转链表
    如何制作gif图片?
    基于javaweb基于ssm框架学生信息管理(选课)系统设计与实现(项目源码)
    Premint工具,作为普通人我们需要了解哪些内容?
    1024 创作者节,奖金多多,直通 offer ~
    【C++】队列
  • 原文地址:https://blog.csdn.net/fqfq123456/article/details/126162617