翼度科技»论坛 编程开发 python 查看内容

Python实战之梦幻钢琴小游戏的实现

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
导语

今天来给大家写一款界面化的(Tkinter)电子钢琴小程序。
音乐是声音的艺术,它通过人们的听觉,来传达思想情感、表现社会生活。但它与舞蹈、绘画不同的呈现形式不同,舞蹈是通过肢体语言,绘画是通过色彩和线条来体现艺术形象。而音乐不是一种具象的形态,它需要通过人们的内心去感受,去理解。
因此,在音乐的学习中,有很多抽象的概念对孩子来说非常难以理解,例如律动、放松、呼吸等。其实,这些看似“只可意会不可言传”的概念,以及一些手指技巧,都可以通过一些形象的比喻,向孩子们说明问题,这不仅能提高孩子们的学习兴趣,并且还能使这些知识在脑海里留下深刻印象。
今天这款电子钢琴小程序不仅可以学到小知识还能边玩儿边锻炼手速鸭~爱了没?

一、环境准备

1)运行环境
开发环境:Python3、Pycharm社区版、tkinter,部分自带的模块安装Python即可使用。
2)模块安装
第三方库的安装方式如下:
一般安装:pip install +模块名  
镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名
模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。

二、代码展示

1)导入模块
  1. import winsound

  2. from tkinter import *
复制代码
2)主程序
  1. def doone():
  2.         for i in range(1,11):
  3.                 i=i*500
  4.                 winsound.Beep(i,500)
  5. def submit():#读取乐谱并播放的函数
  6.         music = list(map(str,u.get()))  #        print(music)        print(p.get())
  7.         order =[[131,147,165,175,196,220,247],[262,296,330,349,392,440,494],[523,587,659,698,784,880,988],[1047,1175,1319,1397,1568,1760,1976]]
  8.         match =['0','1','2','3','4','5','6','7','8','9']
  9.         char =[ 'A','B','C','D']
  10.         n = 1
  11.         j=0
  12.         k=0
  13.         m=0
  14.         time1 = [0 for x in range(10,1000)]
  15.         order1 = [0 for x in range(0,1000)]
  16.         order11 = [0 for x in range(0,1000)]
  17.         orderm = [0 for x in range(0,1000)]
  18.         for i in range(len(music)):
  19.                 if music[i] == '/':
  20.                         n=n+1
  21.                 if i==0:
  22.                         if music[i] == '0' and music[i+1] == '.' and music[i+2] == '5':
  23.                                 time1[j]=0.5
  24.                                 j=j+1
  25.                         t=0
  26.                         while t<10:
  27.                                 if music[i] == match[t] and music[i+3] == '/':
  28.                                         time1[j]=t
  29.                                         j=j+1
  30.                                 t=t+1
  31.                 else:
  32.                         if music[i] == '0' :
  33.                                 time1[j]=0.5
  34.                                 j=j+1
  35.                         for tp in range(1,9):
  36.                                 if (music[i] == match[tp] and music[i-1] == '/' ):
  37.                                         time1[j]=tp
  38.                                         j=j+1
  39.                         for tn in range(0,4):
  40.                                 if music[i] == char[tn]  :
  41.                                         order1[m]=tn
  42.                                         m=m+1
  43.                         for tt in range(1,9):
  44.                                 if music[i] == match[tt] and ( music[i-1] == 'A' or music[i-1] == 'B' or music[i-1] == 'C' or music[i-1] == 'D') :
  45.                                         order11[k]=tt
  46.                                         k=k+1
  47.         print(n)
  48.         l=0
  49.         while l< n:
  50.                 time1[l]=time1[l]*int(p.get())
  51.                 orderm[l]=order[order1[l]][order11[l]-1]
  52.                 time1[l]=int(time1[l])#                print("时间,字母,顺序,音律以此为:")                print(time1[l],   order1[l],  order11[l],orderm[l])
  53.                 l=l+1
  54.         l=0
  55.         while l <n:#                print(orderm[l],time1[l])
  56.                 winsound.Beep(orderm[l],time1[l])
  57.                 l=l+1
  58. #图形界面
  59. root = Tk()
  60. root.title("电子钢琴简易版")
  61. frame = Frame(root)
  62. frame.pack(padx=8, pady=8, ipadx=4)
  63. lab1 = Label(frame, text="请输入乐谱:")
  64. lab1.grid(row=0, column=0, padx=5, pady=5, sticky=W)
  65. #u = StringVar()
  66. #ent1 = Entry(frame, textvariable=u)
  67. #ent1.grid(row=0, column=1, sticky='ew', columnspan=2)
  68. lab2 = Label(frame, text="请输入每个音节代表的时间(单位ms):")
  69. lab2.grid(row=1, column=0, padx=5, pady=5, sticky=W)
  70. p = StringVar()
  71. ent2 = Entry(frame, textvariable=p)
  72. ent2.grid(row=1, column=1, sticky='ew', columnspan=2)
  73. button = Button(frame, text="确认", command=submit, default='active')
  74. button.grid(row=2, column=1)
  75. button2 = Button(frame, text="退出", command=quit)
  76. button2.grid(row=2, column=2, padx=5, pady=5)
  77. button3 = Button(frame, text="第一题播放",command=doone)
  78. button3.grid(row=2, column=0)
复制代码
三、效果展示

1)运行界面

2)小程序截图

以上就是Python实战之梦幻钢琴小游戏的实现的详细内容,更多关于Python梦幻钢琴游戏的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/article/276288.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具