本來想寫幾句的,但是看到前面一篇的反映不是很理想,所以也沒動力了,原計劃下面還想寫個“貪吃蛇”的,看看再說吧,直接上源代碼。
這一次在上一篇程序的基礎(chǔ)上增加了以下功能:
1、鍵盤控制
2、開始、暫停
3、消除時候空行的停頓效果
4、隨著消除行數(shù)的增多,速度加快
5、音效
等等。
代碼里的注釋已經(jīng)很詳細(xì)了,上一篇中模型的代碼基本上沒改動,只是增加了控制和圖形的代碼,自己感覺寫的還是比較有條理的。
提示:本文中的俄羅斯方塊游戲需要 Chrome 瀏覽器才能得到最好的運(yùn)行效果,F(xiàn)irefox 瀏覽器也可以運(yùn)行,但是沒有聲音效果。
后面羅嗦兩句,愿意看的就看看。
這一部分代碼主要由兩個定時器組成。
第一個定時器每間隔一段時間就產(chǎn)生一個 TickMessage 消息,對這個消息的處理就是使方塊下落,下落后每消去一次,觸發(fā)的速度就更快一點(diǎn)。
第二個定時器是消息循環(huán),他盡可能快的循環(huán),所以時間間隔設(shè)置為0。
因?yàn)檎麄€游戲的模型部分和控制部分會產(chǎn)生很多的事件,誰也不知道用戶什么時候按下按鍵,所以這里維護(hù)了一個消息隊列。
一旦有新的情況產(chǎn)生,就在消息隊列里面添加上一條對應(yīng)的消息,而消息循環(huán)不停的從里面取出消息,只要有就取出一條,并處理它。
圖形部分,重點(diǎn)是要把七種顏色的小方塊事先繪制好,并緩存起來,后面需要的時候直接使用。否則臨時繪制的話,隨著方塊的增多,程序會出現(xiàn)卡死現(xiàn)象。