【Python小程序】怀旧经典 | 特色玩法,代码版本的钢琴小游戏了解下?初学钢琴,能提高双手协调与反应能力哦~(源码分享)

导语

哈喽,我是木木子鸭!

最近给大家悄悄的更新了一些关于爬虫的内容呢~有想学习爬虫的小可爱可以学习一整子啦。

今天来给大家写一款界面化的(Tkinter)电子钢琴小程序。

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

​——PS

音乐是声音的艺术,它通过人们的听觉,来传达思想情感、表现社会生活。但它与舞蹈、绘画

不同的呈现形式不同,舞蹈是通过肢体语言,绘画是通过色彩和线条来体现艺术形象。而音乐

不是一种具象的形态,它需要通过人们的内心去感受,去理解。

因此,在音乐的学习中,有很多抽象的概念对孩子来说非常难以理解,例如律动、放松、呼吸

等。其实,这些看似“只可意会不可言传”的概念,以及一些手指技巧,都可以通过一些形象的

比喻,向孩子们说明问题,这不仅能提高孩子们的学习兴趣,并且还能使这些知识在脑海里留

下深刻印象。

今天这款电子钢琴小程序不仅可以学到小知识还能边玩儿边锻炼手速鸭~爱了没?

正文

一、环境准备

1)运行环境 

开发环境:Python3、Pycharm社区版、tkinter,部分自带的模块安装Python即可使用。 

 相对应的安装包/安装教程/激活码/使用教程/学习资料/工具插件 可以直接找我厚台获取 

2)模块安装 

第三方库的安装方式如下: 

 一般安装:pip install +模块名  

镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名 

(还有很多国内镜像源,这里是豆瓣的用习惯了,其他镜像源可以去看下之前文章都有的) 

 模块安装问题可以详细的找我给大家讲一下的哈,之前其实也有的文章写了几个点的。 

二、代码展示

1)导入模块

import winsound

from tkinter import *

2)主程序

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 <n:#		print(orderm[l],time1[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)

三、效果展示

1)运行界面

2)小程序截图

总结

好啦。今天的文章内容就写到这里了哈。

要不要先来试试这款小程序呢!这样让孩子们学习钢琴,是不是更加容易接受鸭~

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目1.8  Wifi破解免费

Python编程零基础如何逆袭成为爬虫实战高手之《WIFI破解》(甩万能钥匙十条街)爆赞爆赞~

项目1.1  《极速车神打字小游戏》

【Python小游戏】通过这款专为程序员设计的《极限车神》小游戏,你的打字速度可以赢过专业录入员,这个秘密98%的人都不知道哦~(爆赞)

项目1.0  超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

项目8.9  《勇者大冒险》游戏

【Pygame实战】只有一个币,投《勇者大冒险》还是《街霸》?(经典复刻,谁的青春回来了?)

🎄文章汇总——

汇总合集 Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值