|
這個(gè)游戲設(shè)計(jì),本質(zhì)上就是用一個(gè)線程或者定時(shí)器產(chǎn)生重繪事件,用線程和用戶輸入改變游戲狀態(tài)。這個(gè)游戲也不例外,啟動(dòng)游戲后,就立即生成一個(gè)重繪線程,該線程每隔50ms繪制一次屏幕。當(dāng)然,重繪時(shí)有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的下墜物(下墜物一共有7種,由4個(gè)小磚塊組成,每種下墜物顏色固定,可以上下左右旋轉(zhuǎn))就不需重繪。游戲畫布是一個(gè)命令接受者,可以接受用戶鍵盤命令,控制下墜物的左移,右移,下移,旋轉(zhuǎn)動(dòng)作。整個(gè)游戲的流程控制體現(xiàn)在游戲畫布對(duì)象的paint()方法里。paint()根據(jù)當(dāng)前的游戲狀態(tài),繪制出當(dāng)時(shí)的游戲畫面。歡迎畫面和Game Over畫面的繪制相當(dāng)簡(jiǎn)單。游戲暫停畫面的繪制也相當(dāng)容易,就是設(shè)立標(biāo)志,讓paint()執(zhí)行的時(shí)候無需真正執(zhí)行重繪動(dòng)作。對(duì)于游戲處于運(yùn)行狀態(tài)的畫面的繪制,則需要在下墜物的當(dāng)前位置,繪制下墜物。在繪制下墜物之前,判斷下墜物是否還能下墜,如果能下墜的話,就讓它下落一格,再進(jìn)行繪制,如果下墜物已無法下墜,則判斷游戲是否處于Game Over狀態(tài),如果是處于Game Over狀態(tài)的話,則設(shè)置游戲狀態(tài)為Game over狀態(tài),這樣畫布在下一次重繪時(shí)就繪出Game Over的畫面.如果游戲不是處于Game Over狀態(tài),則把下墜物固定下來,同時(shí)檢查游戲畫布上下墜物當(dāng)前行下面的所有行,看是否需要進(jìn)行行刪除動(dòng)作,如果需要行刪除,則清除游戲地圖上被刪行的數(shù)據(jù),再把被刪行繪制成背景色。然后初始化一個(gè)新的下墜物,繪制這個(gè)新的下墜物。
|
|