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