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

  def doone():

  for i in range(1,11):

  i=i*500

  winsound.Beep(i,500)

  def submit():#读取乐谱并播放的函数

  music = list(map(str,u.get())) # print(music) print(p.get())

  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]]

  match =['0','1','2','3','4','5','6','7','8','9']

  char =[ 'A','B','C','D']

  n = 1

  j=0

  k=0

  m=0

  time1 = [0 for x in range(10,1000)]

  order1 = [0 for x in range(0,1000)]

  order11 = [0 for x in range(0,1000)]

  orderm = [0 for x in range(0,1000)]

  for i in range(len(music)):

  if music[i] == '/':

  n=n+1

  if i==0:

  if music[i] == '0' and music[i+1] == '.' and music[i+2] == '5':

  time1[j]=0.5

  j=j+1

  t=0

  while t<10:

  if music[i] == match[t] and music[i+3] == '/':

  time1[j]=t

  j=j+1

  t=t+1

  else:

  if music[i] == '0' :

  time1[j]=0.5

  j=j+1

  for tp in range(1,9):

  if (music[i] == match[tp] and music[i-1] == '/' ):

  time1[j]=tp

  j=j+1

  for tn in range(0,4):

  if music[i] == char[tn] :

  order1[m]=tn

  m=m+1

  for tt in range(1,9):

  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') :

  order11[k]=tt

  k=k+1

  print(n)

  l=0

  while l< n:

  time1[l]=time1[l]*int(p.get())

  orderm[l]=order[order1[l]][order11[l]-1]

  time1[l]=int(time1[l])# print("时间,字母,顺序,音律以此为:") print(time1[l], order1[l], order11[l],orderm[l])

  l=l+1

  l=0

  while l

  winsound.Beep(orderm[l],time1[l])

  l=l+1

  #图形界面

  root = Tk()

  root.title("电子钢琴简易版")

  frame = Frame(root)

  frame.pack(padx=8, pady=8, ipadx=4)

  lab1 = Label(frame, text="请输入乐谱:")

  lab1.grid(row=0, column=0, padx=5, pady=5, sticky=W)

  #u = StringVar()

  #ent1 = Entry(frame, textvariable=u)

  #ent1.grid(row=0, column=1, sticky='ew', columnspan=2)

  lab2 = Label(frame, text="请输入每个音节代表的时间(单位ms):")

  lab2.grid(row=1, column=0, padx=5, pady=5, sticky=W)

  p = StringVar()

  ent2 = Entry(frame, textvariable=p)

  ent2.grid(row=1, column=1, sticky='ew', columnspan=2)

  button = Button(frame, text="确认", command=submit, default='active')

  button.grid(row=2, column=1)

  button2 = Button(frame, text="退出", command=quit)

  button2.grid(row=2, column=2, padx=5, pady=5)

  button3 = Button(frame, text="第一题播放",command=doone)

  button3.grid(row=2, column=0)