Python實(shí)戰(zhàn)之夢(mèng)幻鋼琴小游戲的實(shí)現(xiàn)
導(dǎo)語(yǔ)
今天來(lái)給大家寫(xiě)一款界面化的(Tkinter)電子鋼琴小程序。
音樂(lè)是聲音的藝術(shù),它通過(guò)人們的聽(tīng)覺(jué),來(lái)傳達(dá)思想情感、表現(xiàn)社會(huì)生活。但它與舞蹈、繪畫(huà)不同的呈現(xiàn)形式不同,舞蹈是通過(guò)肢體語(yǔ)言,繪畫(huà)是通過(guò)色彩和線條來(lái)體現(xiàn)藝術(shù)形象。而音樂(lè)不是一種具象的形態(tài),它需要通過(guò)人們的內(nèi)心去感受,去理解。
因此,在音樂(lè)的學(xué)習(xí)中,有很多抽象的概念對(duì)孩子來(lái)說(shuō)非常難以理解,例如律動(dòng)、放松、呼吸等。其實(shí),這些看似“只可意會(huì)不可言傳”的概念,以及一些手指技巧,都可以通過(guò)一些形象的比喻,向孩子們說(shuō)明問(wèn)題,這不僅能提高孩子們的學(xué)習(xí)興趣,并且還能使這些知識(shí)在腦海里留下深刻印象。
今天這款電子鋼琴小程序不僅可以學(xué)到小知識(shí)還能邊玩兒邊鍛煉手速鴨~愛(ài)了沒(méi)?
一、環(huán)境準(zhǔn)備
1)運(yùn)行環(huán)境
開(kāi)發(fā)環(huán)境:Python3、Pycharm社區(qū)版、tkinter,部分自帶的模塊安裝Python即可使用。
2)模塊安裝
第三方庫(kù)的安裝方式如下:
一般安裝:pip install +模塊名
鏡像源安裝:pip install -i https://pypi.douban.com/simple/+模塊名
模塊安裝問(wèn)題可以詳細(xì)的找我給大家講一下的哈,之前其實(shí)也有的文章寫(xiě)了幾個(gè)點(diǎn)的。
二、代碼展示
1)導(dǎo)入模塊
import winsound from tkinter import *
2)主程序
def doone(): for i in range(1,11): i=i*500 winsound.Beep(i,500) def submit():#讀取樂(lè)譜并播放的函數(shù) 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("時(shí)間,字母,順序,音律以此為:") 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("電子鋼琴簡(jiǎn)易版") frame = Frame(root) frame.pack(padx=8, pady=8, ipadx=4) lab1 = Label(frame, text="請(qǐng)輸入樂(lè)譜:") 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="請(qǐng)輸入每個(gè)音節(jié)代表的時(shí)間(單位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="確認(rèn)", 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)運(yùn)行界面
2)小程序截圖
以上就是Python實(shí)戰(zhàn)之夢(mèng)幻鋼琴小游戲的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于Python夢(mèng)幻鋼琴游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)讀取Properties配置文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)讀取Properties配置文件的方法,結(jié)合實(shí)例形式分析了Python讀取Properties配置文件類的定義與使用相關(guān)操作技巧,需要的朋友可以參考下2018-03-03python在OpenCV里實(shí)現(xiàn)投影變換效果
這篇文章主要介紹了python在OpenCV里實(shí)現(xiàn)投影變換效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08vscode搭建python Django網(wǎng)站開(kāi)發(fā)環(huán)境的示例
本文主要介紹了vscode搭建python Django網(wǎng)站開(kāi)發(fā)環(huán)境的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python實(shí)現(xiàn)將一段話txt生成字幕srt文件
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)將一段話txt生成字幕srt文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02python自動(dòng)循環(huán)定時(shí)開(kāi)關(guān)機(jī)(非重啟)測(cè)試
這篇文章主要為大家詳細(xì)介紹了python自動(dòng)循環(huán)定時(shí)開(kāi)關(guān)機(jī)(非重啟)測(cè)試,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法
這篇文章主要介紹了詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用Python來(lái)開(kāi)發(fā)Markdown腳本擴(kuò)展的實(shí)例分享
這篇文章主要介紹了使用Python來(lái)開(kāi)發(fā)Markdown腳本擴(kuò)展的實(shí)例分享,文中的示例是用來(lái)簡(jiǎn)單地轉(zhuǎn)換文檔結(jié)構(gòu),主要為了體現(xiàn)一個(gè)思路,需要的朋友可以參考下2016-03-03基于Python實(shí)現(xiàn)一鍵找出磁盤里所有貓照
最近在整理我磁盤上的照片,發(fā)現(xiàn)不少貓照,突然覺(jué)得若能把這些貓照都挑出來(lái),觀察它們的成長(zhǎng)軌跡也是一件不錯(cuò)的事情。一張一張的找實(shí)在是太費(fèi)勁了,能不能自動(dòng)化地找出來(lái)呢?本文將詳細(xì)為大家講講,需要的可以參考一下2022-05-05